有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案