我有两个实体父母和孩子。父母只能有一个孩子,因此它包含一个孩子的外键。
所有 ID 均由 IdentifierGenerator 的自定义实现生成。对于某些实体,我想手动设置 ID。所以我在我的自定义 IdentifierGenerator 中找到了一种方法来获取 id 字段的值。
问题是,当子项的 id 先前已定义且子项尚未持久化时,永远不会调用生成器。
父 hbm.xml 文件:
<hibernate-mapping default-cascade="all">
<class name="com.ParentImpl" table="Parent" dynamic-insert="false" dynamic-update="false">
<cache usage="read-write" />
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="BIGINT"/>
<generator class="com.EntityIdGenerator">
</generator>
</id>
<many-to-one name="child" class="com.ChildImpl" foreign-key="CHILDSC" cascade="all" lazy="false" fetch="select">
<column name="CHILD_FK" not-null="true" sql-type="BIGINT" unique="true"/>
</many-to-one>
</class>
</hibernate-mapping>
子 hbm.xml 文件:
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="BIGINT"/>
<generator class="com.EntityIdGenerator">
</generator>
</id>
我怎样才能改变这种行为?
任何想法 ?
提前致谢。