0

自己双方向関係に問題があり、カスケード削除が機能しません。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

4

1 に答える 1

0

何よりもまず、このエンティティはあまり意味がないと思います。かなり欠陥があるように思えます。名前を持つ家族、子供のリスト (これも家族タイプ)、そして多くの家族を持つことができる 1 人の父親がいます。1 人の父親と子供のリストを持つことができるエンティティ Person を作成する方が便利ではないでしょうか? しかし、これはあなた次第です。

私は 2 人の子供を持つ家族を作成し、コードを実行できました。すべての子供で家族を正常に削除しました。子供がいない家族を正常に削除できますか? 問題はそこにあるのではないでしょうか。

于 2014-03-21T22:11:09.047 に答える