让我有实体A和实体B。实体与A有@OneToOne关系B。 我想下一步: 如果我删除A,那么也必须删除B。 如果我删除B,那么A也不会删除。
A
B
@OneToOne
我必须在哪个实体中设置
@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