0

我有一个自我双向关系的问题,级联删除不起作用,我有以下实体,它的作用基本上是将一个具有多个级别的家谱放在一起,如果我尝试类似 em.remove (family) 它不会删除孩子们并捕获该异常“违反完整性约束 - 找到子记录”

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

4

1 回答 1

0

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

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

于 2014-03-21T22:11:09.047 回答