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;
.
.
.