Your mapping should look like this:
public class Parent {
@OneToMany(mappedBy = parent, cascade = CasacadeType.ALL, orphanRemoval = true)
private Set<Child> children = new HashSet<>();
public void removeChild(Child child) {
children.remove(child);
child.setParent(null);
}
}
public class Child {
@ManyToOne
private Parent parent;
}
Because you have a bidirectional association you have to have both sides in-sync.
Therefore, it's good practice to call:
parent.removeChild(child);
This way, removeChild
is going to remove the Child
from the children
Set
and also set the Child
parent
association to null
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…