- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我读到级联和逆时,据说两者都在做完全不同的事情。级联:在级联中,完成一个操作(保存、更新和删除)后,决定是否需要调用另一个彼此有关系的实体的其他操作(保存、更新和删除)。Inverse:用于决定哪一方是关系所有者来管理关系(外键列的插入或更新)。
假设我拯救了有一些 child 的 parent 。因此,当我一方面使用 inverse="true"cascade="all"设置一对多时,我希望该 child 是该关系的所有者,因此保存父级应该更改子级集合,但是当我添加cascade =“all” hibernate 会改变这种行为并保留 child 。
那么如果级联改变逆的行为,它们有何不同?
最佳答案
举个例子:
所有者方是 Line。反面是顺序。
这意味着,如果您保留一个 Order
,则保留一个 Line
,将该行添加到集合 Order.lines
中,但不要'如果设置 Line.order
,Hibernate 会认为这两个实体之间不存在关联。为什么?因为您只设置了关联的反面 (Order.lines
),而不是所有者面 (Line.order
)。
Cascade 与此无关。假设 Order.lines
使用 cascade=PERSIST
进行注释。这意味着,如果您创建一个 Order
,请创建一个 Line
,将 Line
添加到 Order.lines
,然后持久化 Order,Hibernate 也会自动调用 Line
上的 persist()
。因此,Line
将被持久化,而不必使用该行显式调用 persist()
。但是两个实体之间的关联仍然不会保存在数据库中,因为您还没有设置关联的所有者端:Line.order
。
关于java - Hibernate逆="true"在级联="all"时保存父级保存子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378353/
我是一名优秀的程序员,十分优秀!