java - Hibernate 映射同一列两次

标签 java hibernate jakarta-ee hibernate-mapping hbmxml

如何解决这个问题

Repeated column in mapping for entity: com.abc.domain.PersonConnect column: PERSON_ID (should be mapped with insert="false" update="false")

这是我的 hbm 文件的片段

<class name="com.abc.domain.PersonConnect" table="PERSON_CONNECT">    
    <composite-id>
        <key-many-to-one name="Parent" class="com.abc.domain.Person" column="PARENT_PERSON_ID"/>
        <key-many-to-one name="Child" class="com.abc.domain.Person" column="CHILD_PERSON_ID"/>
    </composite-id>

    <many-to-one class="com.abc.domain.Person" fetch="select" name="parent" lazy="false" > 
        <column length="20" name="PERSON_ID" not-null="true"/> 
    </many-to-one> 
    <many-to-one class="com.abc.domain.Person" fetch="select" name="child" lazy="false" > 
        <column length="20" name="PERSON_ID" not-null="true"/> 
    </many-to-one>    
</class>

表格是这样的

人脉联系

  • PK - PARENT_PERSON_ID
  • PK - CHILD_PERSON_ID

  • PK - PERSON_ID
  • 姓名
  • 名字

最佳答案

你的映射是错误的,这是正确的映射。在多对一方面,列名是同一个表中的列,它是引用 Person 主键的外部列。

<class name="com.abc.domain.PersonConnect" table="PERSON_CONNECT">

 <composite-id>
    <key-many-to-one name="Parent" class="com.abc.domain.Person" column="PARENT_PERSON_ID"/>
    <key-many-to-one name="Child" class="com.abc.domain.Person" column=" CHILD_PERSON_ID"/>
     </composite-id>

</class>

关于java - Hibernate 映射同一列两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7577701/

相关文章:

java - 在没有级联的情况下驱逐急切关联 ="evict"

java - ThreadPoolExecutor 同步

java - Jackson将java组合序列化为json

java - 使用cloudera hadoop java培训项目时加载类失败

java - 使用 Java 代码访问 Tomcat 监视器

Java正则表达式匹配一个反斜杠

java - 通用枚举 JPA AttributeConverter 实现

java - HTTP 状态 500 - javax.el.PropertyNotFoundException : Property not found on type

java - 我应该在方法签名中声明从方法抛出的所有异常,还是只声明异常的父类(super class)?

java - Spring MVC 生成 "Neither BindingResult nor plain target object exception for bean name ' 命令'可用作请求属性”