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
  • 相关阅读:
    cliconfg
    SQL 校验身份证格式
    常用MIME类型汇总
    SqlBulkCopy批量将Excel(Aspose)数据导入至SQL Server
    C#生成图片验证码
    SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行
    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
    C#常用加密方式
    CURSOR 游标使用示例
    linux命令
  • 原文地址:https://www.cnblogs.com/pecool/p/9690892.html
Copyright © 2011-2022 走看看