首页 > 解决方案 > 无法删除子实体 JPA

问题描述

我有这样的关系的 JPA 实体:

public class SuperParent {

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
  @JoinColumn(name = "parent_id")
  @Builder.Default
  private Set<Parent> parents = new HashSet<>();

  @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
  @JoinColumn(name = "super_parent_id")
  private Set<Child> children = new HashSet<>();
}
public class Parent {

    @OneToMany(mappedBy= "parent" cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
    @Builder.Default
    private Set<Child> children = new HashSet<>();

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "super_parent_id")
    private SuperParent superParent;

}
public class Child {
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "parent_id")
    private Parent parent;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "super_parent_id")
    private SuperParent superParent;
}

当我调用childRepository.deleteById()时,删除操作不会删除子实体,我不知道是什么问题。

标签: javaspringjpaspring-data-jpa

解决方案


推荐阅读