Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠-已删除子级,但未删除父级_Java_Hibernate_Orm - Fatal编程技术网

Java 休眠-已删除子级,但未删除父级

Java 休眠-已删除子级,但未删除父级,java,hibernate,orm,Java,Hibernate,Orm,我有两个实体: public class Branch extends IdModel { @Column(nullable = false) private Boolean warehouse; @OneToOne(optional = false) @JoinColumn(name = "delivery_address", nullable = false, orphanRemoval = true) private DeliveryAddress del

我有两个实体:

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<>();
}
}

我正在使用Spring的JpaRepository delete(T entity)方法来删除一个分支。它所做的只是一堆select查询,删除广播规则(如果有),但不删除分支实体本身-delete SQL查询不会发送到DB。我试图使用本机查询直接删除分支实体,但这只会导致约束冲突,因为deliveryAddress仍在引用该分支。我希望避免手动删除所有相关内容,并希望使用Hibernate为我完成这项工作

如何使hibernate实际删除分支实体,然后删除传递地址?

解决了这个问题。拥有分支集合的“Company”实体将fetch类型设置为eager,并将其更改为lazy,这样就解决了问题。拥有分支集合的“Company”实体将fetch类型设置为eager,并将其更改为lazy

public class DeliveryAddress extends IdModel {

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


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

   .
   .
   .