4

怎么解决这个问题

实体映射中的重复列:com.abc.domain.PersonConnect 列:PERSON_ID(应使用 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>

桌子是这样的

Person_Connect

  • PK - PARENT_PERSON_ID
  • PK - CHILD_PERSON_ID

  • PK - PERSON_ID
  • 名称
  • 名称
4

2 回答 2

2

你的映射是错误的,这是正确的映射。在多对一的情况下,列名是同一个表中的列,它是引用 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>
于 2011-09-28T03:12:00.683 回答
1

好吧,一方面,“父”和“子”似乎不太可能映射到同一列。这可能是个问题。否则,按照错误说明进行操作,并添加insert="false" update="false"到列映射之一。一列只能“属于”一个属性。否则,您可能会陷入无法解决的情况,其中一个属性说值应该是x,而另一个说它应该是y

于 2011-09-28T02:38:01.913 回答