假设A对象与B对象是一对多的关系,B的集合作为A的属性children而存在。
class A{
……
@OneToMany(mappedBy=”parent”, cascade={CascadeType.ALL})
private Set<B> children;
……
}
使用CascadeType.ALL能够实现级联保存、级联删除。但是级联更新的时候遇到如下问题:
A.children.remove(child1);
A.children.add(child2);
这时候child2确实被添加到数据库了,但child1却并没有被删除。
其实只要加上orphanRemoval=true 就可以了
class A{
……
@OneToMany(mappedBy=”parent”, cascade={CascadeType.ALL},orphanRemoval=true)
private Set<B> children;
……
}