一尘不染

Hibernate:级联类型

hibernate

让我有实体A和实体B。实体与A@OneToOne关系B
我想下一步:
如果我删除A,那么也必须删除B。
如果我删除B,那么A也不会删除。

我必须在哪个实体中设置

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

我必须在哪一边

@OneToOne(cascade = {CascadeType.ALL})


阅读 240

收藏
2020-06-20

共1个答案

一尘不染

从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

2020-06-20