gpt4 book ai didi

java - 级联删除关联的困惑

转载 作者:行者123 更新时间:2023-12-01 15:03:18 25 4
gpt4 key购买 nike

我使用的是 HIbernate 3.2.5。我在部门和培训表之间有一对多关联。一个部门可以接受不止一项培训。

<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_ORPHAN,说明子对象不能独立存在,就可以了。

此外,您在删除之前不会加载对象图。执行删除操作如下:

SessionFactory sf = new Configuration().configure("trial.cfg.xml")
.buildSessionFactory();
Session session = sf.openSession();
//load the object before deleting
Dept department = session.get(Dept.class, new Integer(2));
session.delete(department);
session.flush();
session.close();

关于java - 级联删除关联的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13323799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com