zoukankan      html  css  js  c++  java
  • ORA-02275: 此表中已经存在这样的引用约束条件

    问题描述:

        针对这个问题,发表一下我的观点。emp表和dept表使用hibernate关联查询时报的错,使用的是非注解形式,和其他一样。他们各自有entity,各自有一个hbm.xml文件,emp表这边配置多对一,dept表这边在set或者list中配置一对多。

    consol报错截图如下:

    代码片段:

       部门entity

    public class Dept {
        private Set<Emp> emps = new HashSet<Emp>(); 
    set/get方法...
    }

      部门hbm.xml

    <hibernate-mapping package="com.cissst.it.dept.entity">
        <class name="Dept" table="DEPT">
            <id name="deptno" column="DEPTNO">
                <generator class="native"></generator>
            </id>
            <property name="dname" column="DNAME"></property>
            <set name="emps" inverse="true">
                <key column="deptno"></key>
                <one-to-many class="com.cissst.it.emp.entity.Emp"/>
            </set>
        </class>
    </hibernate-mapping>

      员工entity

    public class Emp {
        //所属部门
        private Dept dept;
    set/get方法...
    }

      员工.hbm.xml

    <hibernate-mapping package="com.cissst.it.emp.entity">
        <class name="Emp" table="EMP">
            <id name="empno" column="EMPNO">
                <generator class="native"></generator>
            </id>
            <property name="ename" column="ENAME"></property>
            <property name="job" column="JOB"></property>
            <many-to-one name="dept" class="com.cissst.it.dept.entity.Dept"/>
        </class>
    </hibernate-mapping>

    执行报错的方法:

    Session session = SessionUtil.openSession();
    Dept dept = session.get(Dept.class, 10);
    System.out.println(dept);

    问题分析:

        根据错误提示,估计是两个实体类关系重复定义了,于是我复制了emp表和dept,复制后得到emp1和dept1,然后对emp1和dept1设置了主键,没有设置外键,结果运行正常。这说明数据库中的外键定义了一次2个表关系   和  hbm定义了一次表关系重复定义了。

    解决思路:

    我在之前做过的审计项目中,数据库中有些表也是仅仅设置了主键,他们之间的关系也只是在注解中体现了。如有问题,烦请斧正;

    Best Regards
  • 相关阅读:
    【Linux】防火墙命令
    【MySQL】mysql分组后重命名
    【SpringBoot】全局配置Long转String,解决前端接收时精度丢失的问题
    【VSCode】vscode运行命令时提示“因为在此系统上禁止运行脚本”
    【Mybatis】mybatisplus代码生成器【逆向工程】搭配Lombok和swagger2
    【Linux】赋予root权限
    【MySQL】mysql模糊匹配多个字段
    idea为新创建的类增加个人注释模板
    【Linux】学习笔记:(一)常用命令大全
    Navicat查看数据库的密码
  • 原文地址:https://www.cnblogs.com/pecool/p/9690892.html
Copyright © 2011-2022 走看看