Hibernate 休眠一对多映射,在多侧使用复合键

Hibernate 休眠一对多映射,在多侧使用复合键,hibernate,one-to-many,composite-key,Hibernate,One To Many,Composite Key,我在Hibernate映射方面面临以下问题——花了很多时间做了一项研究,但还没有发现类似的情况。让我描述一下我们正在处理的简单数据库模式 create table point( POINT_ID integer primary key, x integer, y integer); create table segment( POINT_A_ID integer references point(POINT_ID), POINT_B_ID integer references point(PO

我在Hibernate映射方面面临以下问题——花了很多时间做了一项研究,但还没有发现类似的情况。让我描述一下我们正在处理的简单数据库模式

create table point(
POINT_ID integer primary key,
x integer,
y integer);

create table segment(
POINT_A_ID integer references point(POINT_ID),
POINT_B_ID integer references point(POINT_ID),
constraint segment_PK primary key(POINT_A_ID,POINT_B_ID)
);
如您所见,线段只是两个点之间的一条线,由这对点(点a_ID,点B_ID)标识。 我只想从点的一侧映射此关联。我想我应该有两个系列,例如。 私有集分段a、分段b

以下是我的xml映射文件:

<hibernate-mapping>
 <class name="entities.model.Point" table="POINT">
    <id name="id" type="java.lang.Long">
        <column name="POINT_ID" />
        <generator class="native" />
    </id>
    <property name="x" type="int">
        <column name="X" />
    </property>
    <property name="y" type="int">
        <column name="Y" />
    </property>
    <set name="segmentsA" table="SEGMENT" lazy="false" cascade="all-delete-orphan" >
        <key column="POINT_A_ID" not-null="true" update="false" />
        <one-to-many class="entities.model.Segment"/>
    </set>
    <set name="segmentsB" table="SEGMENT" lazy="false" cascade="all-delete-orphan">
        <key column="POINT_B_ID" not-null="true" update="false" />
        <one-to-many class="entities.model.Segment" />
    </set>
 </class>
</hibernate-mapping>


当我试图在它们之间保留一些点和线段时(已将一个线段实例添加到segmentsA和segmentsB适当的点实例集),我得到以下错误:
org.hibernate.MappingException:实体映射中的重复列:entities.model.Segment列:POINT\u A\u ID(应使用insert=“false”update=“false”映射)

我将非常感谢您对本案的建议:)

<hibernate-mapping>
<class name="entities.model.Segment" table="SEGMENT">
    <composite-id name="segmentPK" class="entities.model.SegmentPK">
        <key-property name="pointAId" >
            <column name="POINT_A_ID" />
        </key-property>
        <key-property name="pointBId"> 
            <column name="POINT_B_ID"/>
        </key-property>
    </composite-id>
</class>
</hibernate-mapping>