Hibernate自我双向OneToMany级联删除不起作用

时间:2014-03-21 18:54:01

标签: java hibernate cascade cascading-deletes nhibernate-cascade

我有一个自我双向关系的问题不能工作级联删除,我有以下实体,它的功能基本上是一个多层次的家谱,如果我尝试像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

1 个答案:

答案 0 :(得分:0)

首先,我不认为这个实体有多大意义,这对我来说似乎很不妥。你有一个名字的家庭,一个孩子的名单(也是家庭类型)和一个可以有许多家庭的父亲。创建一个可以拥有一个父亲和一个孩子列表的实体Person会不会更有用?但这取决于你。

我创建了一个有2个孩子的家庭,能够运行您的代码,它成功地删除了每个孩子的家庭。你能成功地在没有孩子的情况下搬家吗?也许这就是问题所在。