如何解决这个问题
实体映射中的重复列:com.abc.domain.PersonConnect column:PERSON_ID(应使用insert =“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>
,表就像这样
答案 0 :(得分: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>
答案 1 :(得分:1)
嗯,首先,似乎不应该将“Parent”和“Child”都映射到同一列。那可能是个问题。否则,请执行错误说明,并将insert="false" update="false"
添加到其中一个列映射中。列只能“属于”单个属性。否则,您可以进入无法解决的情况,其中一个属性表示值应为x
而另一个属性表示它应为y
。