Hibernate: Cascade Type
hibernate, java, jpa
Solution
The cascade from A to B should be placed on the field referencing `B` in class `A`, the cascade from B to A should be placed on the field referencing `A` in class `B`.
public class A {
@OneToOne(cascade = {CascadeType.ALL})
B b;
}
Should be in class `A`, as you want every action to be cascaded to `B`.
public class B {
@OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
A a;
}
Should be in class `B`, as you only want certain actions cascaded to `A`
Problem
Let's I have entity `A` and entity `B`. Entity `A` have `@OneToOne` relationship with `B`. I want do next: if I remove A then B must be removed also. If I remove B then A isn't removed. In which entity I must set ``` @OneToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) ``` and in which side I must set ``` @OneToOne(cascade = {CascadeType.ALL}) ``` ?