HIbernate 3.2.5 を使用しています。Dept と Training テーブルの間に 1 対多の関連付けがあります。1 つの部門で複数のトレーニングを受けることができます。
<id name="deptId" type="integer" column="DEPT_ID">
<generator class="assigned"></generator>
</id>
<property name="deptName">
<column name="DEPT_NAME"></column>
</property>
<map name="trainingDetails" inverse="false" cascade="delete" lazy="false">
<key column="DEPT_ID"></key>
<map-key formula="ID" type="integer"></map-key>
<one-to-many class="model.Training"/>
</map>
エントリを削除しようとすると:
SessionFactory sf = new Configuration().configure("trial.cfg.xml").buildSessionFactory();
Session session = sf.openSession();
Dept department = new Dept();
department.setDeptId(2);
session.delete(department);
session.flush();
session.close();
子テーブルでは、削除クエリではなく更新クエリがコンソールに出力されていることがわかります。
update training set DEPT_ID=null where DEPT_ID=?
しかし、カスケードであるdelete
ため、子テーブルも権利delete
ではなく操作を実行する必要がありupdate
ますか?
私の間違いがどこにあるのか教えてください。
よろしく、