持久性图中的级联和反向

时间:2013-08-04 01:53:01

标签: hibernate nhibernate orm circular-dependency

我想知道当我这样做时会发生什么:

Person p1 = new Person();
...
p1.save()

就级联保存更新的顺序而言。

这里有一些我想知道它们是否正确的理由:

a)如果Person与'inverse = false'(默认)有至少一个关系,它将首先执行所有级联,最后保持p1本身。 (因为可能还不知道FK身份)

b)如果Person有所有关系和'inverse = true',它可以先保存p1然后再进行级联。

c)假设我们有一个Person< - > Car一对一的双向关系,我们都有'inverse = false'和'save-update'级联:

c.1)会发生什么?这似乎是一个无限循环的情况。

c.2)正确的解决方案是在使用inverse = true进行'cascade = save-update',而在Car中不做cascade和inverse = false?

也许关于做级联的决定背后的真实逻辑以及如何涉及“反向”属性的进一步链接可以帮助我。

提前致谢

1 个答案:

答案 0 :(得分:1)

在级联中,在一次操作后(保存,更新和删除)已完成,它决定是否需要调用其他操作(保存,更新和删除)另一个有彼此关系的实体。

所以对于问题a和b级联将始终检查(并非总是发生)在初始过程完成后,如果仍然需要级联,那么hibernate将执行级联,如果不是,则不执行。< / p>

对于问题C,一对一和多对一没有反向关键字,因此它将被忽略。但是如果你想创建正确的双向一对一,你可以see it here