java从父集合中删除时删除子对象
我目前遇到的问题与这里讨论的问题非常相似 Hibernate triggering constraint violations using orphanRemoval
不幸的是,我得到了一个SqlException-列不能为null的错误。我的实体如下:
CallDetail
@OneToMany(mappedBy = "callDetail", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<CallCycleDetail> callCycles;
public void addCallCycleDetail(CallCycleDetail callCycleDetail) {
if (this.callCycles == null) {
this.callCycles = new HashSet<CallCycleDetail>();
}
callCycles.add(callCycleDetail);
callCycleDetail.setCallDetail(this);
}
public void removeCallCycleDetail(CallCycleDetail callCycleDetail) {
callCycles.remove(callCycleDetail);
callCycleDetail.setCallDetail(null);
}
CallCycleDetail
@ManyToOne(optional=false)
@JoinColumn(name = "call_detail", nullable=false)
private CallDetail callDetail;
我的JUnit测试如下:
CallDetail callDetail = createCallDetail();
CallCycleDetail ccd = new CallCycleDetail(callDetail);
callDetail.addCallCycleDetail(ccd);
callDetailService.saveCallDetail(callDetail);
callDetail = callDetailService.findCallDetail(callDetail.getId());
callDetail.removeCallCycleDetail(ccd);
callDetailService.updateCallDetail(callDetail);
它可以正确地保存。然而,当我试图清除callCycles集时,它会由于Notnull约束而失败。我怎样才能解决这个问题
共 (0) 个答案