我正在建立一对多的关系.所以,我有一个父母和一个孩子.cascade属性设置为all.
我想知道,如果我们考虑以下代码:
Parent p = (Parent) session.load(Parent.class, pid);
Child c = new Child("child element");
p.addChild(c);
session.flush();
Run Code Online (Sandbox Code Playgroud)
非常感谢
Case inverse = false:
在这种情况下,父级负责保存更新子级及其关系.因此,在您的示例中,将在数据库中更新子项.将有两个SQL查询:1)插入子.2)用父ID的外键更新子项.
Case Inverse = true:
在这种情况下,孩子有责任进行保存更新.所以在你的代码中,child将被保存在数据库中,但parent的外键将为null.只执行一个sql查询,即insert子项.要更新父级外键,您需要手动保存子级.
Child child = new Child();
child.setParent(parent);
session.save(child);
Run Code Online (Sandbox Code Playgroud)
我想,这些案例的答案解释了你的第三个问题的答案.
希望这有帮助.
| 归档时间: |
|
| 查看次数: |
6309 次 |
| 最近记录: |