親と子の 2 つのエンティティがあります。親は子を 1 つだけ持つことができるため、子の外部キーが含まれます。
すべての 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>
child-hbm.xml ファイル:
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="BIGINT"/>
<generator class="com.EntityIdGenerator">
</generator>
</id>
この動作を変更するにはどうすればよいですか?
何か案が ?
前もって感謝します。