我正在创建一对多关系。所以,我有父母和孩子。级联属性设置为全部。
我想知道,我们是否考虑以下代码:
Parent p = (Parent) session.load(Parent.class, pid);
Child c = new Child("child element");
p.addChild(c);
session.flush();
- Q1) 如果父元素拥有关系,如 中所示,对于父元素 inverse=false,那么子元素添加是否会在数据库中更新?
- Q2) 如果子元素拥有关系,如 中所示,对于父元素 inverse=true,那么子元素 addtion 是否会在数据库中更新?
- Q3)谁拥有关系在上述代码中对于更新是否会被看到没有影响?
多谢
大小写反转=假:
在这种情况下,父母有责任保存更新孩子及其关系。因此,在您的示例中,子项将在数据库中更新。将有两个 sql 查询:1)插入子项。 2)用父id的外键更新子。
大小写反转 = true:
在这种情况下,孩子有责任自行保存更新。因此,在您的代码中,子级将保存在数据库中,但父级的外键将为空。只会执行一个 sql 查询,即插入子查询。要更新父级的外键,您需要手动保存子级。
Child child = new Child();
child.setParent(parent);
session.save(child);
我认为,这些案例的答案解释了你第三个问题的答案。
希望这有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)