gpt4 book ai didi

java - 在 hibernate 中删除订单

转载 作者:可可西里 更新时间:2023-11-01 06:33:41 25 4
gpt4 key购买 nike

我有 4 个实体:

Profile与companyContract有关系:

@OneToMany(fetch = FetchType.EAGER, mappedBy = "profile", cascade = { CascadeType.ALL })
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<CompanyContract> companyContracts;

CompanyContract与工时单有关系:

@OneToMany(mappedBy = "companyContract", cascade = { CascadeType.ALL },orphanRemoval = true, fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<Timesheet> timesheets;

@ManyToOne
@JoinColumn(name = "IDPROFILE")
private Profile profile;

Timesheet 与发票有关系:

@OneToMany(mappedBy = "timesheet", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@Cascade({ org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
private List<Invoice> invoices;

@ManyToOne
@JoinColumn(name = "IDCONTRACT")
private CompanyContract companyContract;

发票:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "ID_TIMESHEET")
private Timesheet timesheet;

正如您在这里看到的,我正在使用 org.hibernate.annotations.CascadeType.DELETE_ORPHAN 以便我可以删除父项的子项。

如果我执行这个:

Profile p = companyContract.getProfile();
p.getCompanyContracts().remove(companyContract);
companyContract.setProfile(null);
profileService.update(p);

---> 删除的顺序应该是:

删除发票 --> 时间表 --> 公司契约(Contract),否?

相反,我收到了这个错误:

org.hibernate.exception.ConstraintViolationException: Column 'IDCONTRACT' cannot be null

而且我已经检查过,这个错误发生在 profileService.updateProfile(p);

之后

最佳答案

问题似乎是包含时间表的表中的 IDCONTRACT 列具有 NOT NULL 限制。将其删除并重试。

如果您要自动生成架构,请尝试将 @Basic(optional = true) 添加到 Timesheet.companyContract:

@Basic(optional = true)
@ManyToOne
@JoinColumn(name = "IDCONTRACT")
private CompanyContract companyContract;

关于java - 在 hibernate 中删除订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com