【问题标题】:What is the difference between mappedBy and CascadeType.ALL? [duplicate]mappedBy 和 CascadeType.ALL 有什么区别? [复制]
【发布时间】:2018-08-26 21:04:09
【问题描述】:

我正在学习 Hibernate,遇到一个问题:mappedByCascadeType.ALL 有什么区别?

我们在拥有方使用mappedBy,以消除过度的持久性。例如,mappedBy 我们可以替换

a.addB(b);
b.setA(a);

a.addB(b);

在 A 和 B 之间的 ONE-TO-MANY 关系以及 B 和 A 之间的 MANY-TO-ONE(双向)的情况下。

为什么在这种情况下我们需要CascadeType

【问题讨论】:

  • 不,这根本不是 mappedBy 的用途。 mappedBy 有必要告诉双向关联的所有者方是什么。 OneToMany/ManyToOne 必须的所有者方是多方。而且您必须设置所有者方,因此a.addB(b)工作(除非该方法调用b.setA(this)

标签: java hibernate jpa


【解决方案1】:

CascadeType 选项告诉 hibernate 在 A 上执行时还要在 B 上执行哪些操作。
例如,如果您在未设置 CascadeType.Persist 的情况下持久化 A,则不会持久化 B。
另一方面,mappedBy 选项创建双向关系,A 由 B 表中的外键表示。
如果你真的需要CascadeType.ALL 取决于你的用例,它允许你将 A 和 B 之间的关系视为一个组合,A 拥有 B。

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 2015-11-23
    • 2013-02-13
    • 2011-04-26
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多