• 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
  • 相关阅读:
    细思极恐-你真的会写java吗?
    java定时器无法自动注入的问题解析(原来Spring定时器可以这样注入service)
    java并发编程之volatile
    细思极恐-你真的会写java吗?
    细思极恐-你真的会写java吗?
    细思极恐-你真的会写java吗
    1月中旬值得一读的10本技术新书(机器学习、Java、大数据等)!
    0基础小白怎么学好Java?
    java日常知识点积累
    (解决)ECSHOP info: Can't Connect MySQL Server(localhost:3306)!转删
  • 原文地址:https://www.cnblogs.com/pecool/p/9690892.html
Copyright © 2020-2023  润新知