我有一个自我双向关系的问题不能工作级联删除,我有以下实体,它的功能基本上是一个多层次的家谱,如果我尝试像em.remove(家庭)它不删除子项并捕获该异常“违反完整性约束 - 发现子记录”
public class Family{
@Id
public Long id;
public String name;
@ManyToOne
@JoinColumn(name = "id_father")
public Family father;
@OneToMany(cascade = CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(name = "id_father")
public List<Family> children;
//getters setters
//hashcode equals
}
表
ID
名称
id_father
答案 0 :(得分:0)
首先,我不认为这个实体有多大意义,这对我来说似乎很不妥。你有一个名字的家庭,一个孩子的名单(也是家庭类型)和一个可以有许多家庭的父亲。创建一个可以拥有一个父亲和一个孩子列表的实体Person会不会更有用?但这取决于你。
我创建了一个有2个孩子的家庭,能够运行您的代码,它成功地删除了每个孩子的家庭。你能成功地在没有孩子的情况下搬家吗?也许这就是问题所在。