Hibernate Inverse 属性

2023-12-20

我正在创建一对多关系。所以,我有父母和孩子。级联属性设置为全部。

我想知道,我们是否考虑以下代码:

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(使用前将#替换为@)

Hibernate Inverse 属性 的相关文章

随机推荐