【问题标题】:Hibernate self Bidirectional OneToMany Cascade remove doesn't work休眠自我双向OneToMany级联删除不起作用
【发布时间】:2014-03-21 18:54:01
【问题描述】:

我有一个自我双向关系的问题,级联删除不起作用,我有以下实体,它的作用基本上是将一个具有多个级别的家谱放在一起,如果我尝试类似 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_father

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-03
      • 2019-12-24
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多