親と子の 2 つのエンティティがあります。親は子を 1 人だけ持つことができます。親を保存すると、CONSTRAINT VIOLATION 例外が発生します。
では、Hibernate が親エンティティを保存する前に子を保存しないのはなぜですか?
親を保存するために使用される Java コード:
Child c = new Child();
c.setId(1);
Parent p = new Parent();
p.setId(4);
p.setChild(c);
親-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"/>
</id>
<many-to-one name="child" class="com.ChildImpl" foreign-key="CHILDFKC" 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
<hibernate-mapping default-cascade="all">
<class name="ChildImpl" table="DATA_DELETION_PERIODS" dynamic-insert="true" dynamic-update="true">
<cache usage="read-write" />
<id name="id" type="java.lang.Long" unsaved-value="null">
<column name="ID" sql-type="BIGINT"/>
</id>
</class>
</hibernate-mapping>