让我有实体 A
和实体 B
。实体 A
与 B
有 @OneToOne
关系。
我接下来要做什么:
如果我删除 A,那么 B 也必须被删除。
如果我删除 B,则 A 不会被删除。
我必须在哪个实体中设置
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
我必须设置在哪一边
@OneToOne(cascade = {CascadeType.ALL})
?
最佳答案
从 A 到 B 的级联应该放在类 A
中引用 B
的字段上,从 B 到 A 的级联应该放在引用 的字段上>A
类 B
。
public class A {
@OneToOne(cascade = {CascadeType.ALL})
B b;
}
应该在 A
类中,因为您希望每个操作都级联到 B
。
public class B {
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
A a;
}
应该在 B
类中,因为您只希望将某些操作级联到 A
关于java - hibernate :级联类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10551485/