我正在建立一对多的关系。所以,我有一个父母和一个孩子。级联属性设置为全部。
我想知道我们是否考虑以下代码:
Parent p = (Parent) session.load(Parent.class, pid); Child c = new Child("child element"); p.addChild(c); session.flush();
非常感谢
大小写逆=假:
在这种情况下,保存和更新孩子及其关系是父母的责任。因此,在您的示例中,child将在数据库中更新。将有两个SQL查询:1)插入子级。2)用父代ID的外键更新子代。
大小写逆= true:
在这种情况下,孩子有责任自行保存更新。因此,在您的代码中,子级将保存在数据库中,而父级的外键将为null。将仅执行一个sql查询,该查询是insert子查询。要更新父级的外键,您需要手动保存子级。
Child child = new Child(); child.setParent(parent); session.save(child);
我认为,这些案例的答案解释了您的第三个问题的答案。
希望能有所帮助。