hibernate-复合密钥配置

hibernate-复合密钥配置,hibernate,Hibernate,我有两个具有父/子关系的表。子对象有一个包含两列的表。 原来子表的主键值和父表的主键值相同。 我在子表的hbm中定义了它,如下所示 <id name="c1" type="int"> <column name="column1"/> <generator class="foreign"/> <param name="property">column1</param> </generator&

我有两个具有父/子关系的表。子对象有一个包含两列的表。 原来子表的主键值和父表的主键值相同。 我在子表的hbm中定义了它,如下所示

<id name="c1" type="int">
    <column name="column1"/>
    <generator class="foreign"/>
        <param name="property">column1</param>
    </generator>
</id>

专栏1
现在,子表中的第二列(定义如下)也是主键的一部分

<many-to-one name="c2" class="com.Column2" fetch="select">
    <column name="column2" not-null="true"/>
</many-to-one>

因此,我必须在hbm中创建一个复合id,并基本上在其中定义这两个列,但复合id可能不支持生成器id,就像我正在尝试的那样

<composite-id>
    <key-many-to-one name="c1" column="column1"/>
    <key-many-to-one name="c2" column="column2"/>
</composite-id>


但复合id似乎不支持自动生成(first1)类型的列。因此,我的问题是如何在hbm文件中使用generator类和“多对一”映射中的一列创建复合id…

我不知道为什么我的hbm文件片段从未显示在该网站上…有人吗?基本上,我想要实现的是,在父/子表之间有cascade=“all”。父项的键是子表中的主键之一,但父项/子项具有一对多关系,所以子表中的“生成键”不是唯一的。唯一性是由子表中的列组合定义的,我无法定义,因为子表中的复合键不支持生成的键。结果,当刚生成的键是Id时,如果级联插入尝试在子表中插入同一生成键的多个记录,那么hibernate会抛出“NoniqueObject”异常…有人吗?