让我有实体A和实体B。实体A@OneToOne具有B关系。
我接下来要做:
如果我删除A,那么B也必须删除。
如果我删除B,那么A也不会删除。

我必须在哪个实体中设置

@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})

我必须在哪一边
@OneToOne(cascade = {CascadeType.ALL})

最佳答案

从A到B的级联应该放在引用B中的A的字段上,从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/

10-09 08:47