0
我正在使用HIbernate 3.2.5。我有部门和培训表之间的一对多关联。一个部门有能力参加一次以上的培训。Cascade DELETE关联混淆
<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
对不对?
请让我知道我的错误在哪里。
问候,
不,我试过但得到了同样的结果。仍然执行'update'而不是子表上的'delete'。 – user182944
@ user182944更新了答案。请尝试。 –
现在确定'delete'和'delete-orphan'正在工作。是因为我加载对象的方式吗?请详细解释一下。 – user182944