【问题标题】:Hibernate - child removed but parent is not休眠 - 孩子被删除但父母不是
【发布时间】:2020-01-02 16:12:45
【问题描述】:

我有两个实体:

public class Branch extends IdModel {

   @Column(nullable = false)
   private Boolean warehouse;

   @OneToOne(optional = false)
   @JoinColumn(name = "delivery_address", nullable = false, orphanRemoval = true)
   private DeliveryAddress deliveryAddress;

   @ManyToOne(fetch = LAZY)
   @JoinColumn(name = "company", nullable = false)
   private Company company;

   @ManyToMany(mappedBy = "additionalBranches")
   private List<User> otherUsers = new ArrayList<>();

   @OneToMany(mappedBy = "homeBranch", orphanRemoval = true)
   private List<User> homeUsers = new ArrayList<>();

   @OneToMany(mappedBy = "branch", orphanRemoval = true, cascade = CascadeType.REMOVE)
   private List<BroadcastRule> broadcastRules = new ArrayList<>();
}

public class DeliveryAddress extends IdModel {

   @ManyToOne
   @JoinColumn(name = "owner_company", nullable = false)
   private Company ownerCompany;


   @OneToOne(mappedBy = "deliveryAddress")
   private Branch branch;

   .
   .
   .

}

我正在使用 Spring 的 JpaRepository delete(T entity) 方法来删​​除一个分支。它所做的只是一堆选择查询,删除广播规则(如果有的话),但不会删除分支实体本身 - 删除 SQL 查询不会发送到数据库。我尝试使用本机查询直接删除分支实体,但这只是导致违反约束,因为 deliveryAddress 仍在引用分支。我想避免手动删除所有相关的东西,并希望让 Hibernate 为我完成这项工作。

我怎样才能让休眠以实际删除分支实体,然后删除收货地址?

【问题讨论】:

    标签: java hibernate orm


    【解决方案1】:

    解决了。具有分支集合的“公司”实体将获取类型设置为渴望,将其更改为惰性就可以了

    【讨论】:

      猜你喜欢
      • 2017-06-30
      • 1970-01-01
      • 2012-06-13
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多