切记制定关联操作 merge
一开始以为refresh就可以联级保存,后来发现merge是联级保存
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE }, fetch = FetchType.EAGER)
@JoinColumn(name = "purchase_contract_id")
private List<PurchaseContractCarModel> purchaseContractCarModelList;
@Override
@Transactional(rollbackFor = Exception.class)
public void update(PurchaseContractDto resources) {
PurchaseContract purchaserContract = purchaserContractRepository.findById(resources.getId()).orElseGet(PurchaseContract::new);
ValidationUtil.isNull(purchaserContract.getId(), "PurchaseContract", "id", resources.getId());
resources.getCarModelDeleteList().forEach(item -> item.setActive(BaseEntityStatus.NOT_ACTIVE));
resources.getPurchaseContractCarModelList().forEach(item -> item.setActive(BaseEntityStatus.ACTIVE));
resources.getPurchaseContractCarModelList().addAll(resources.getCarModelDeleteList());
purchaserContract.copy(GeneralConv.conv(resources, PurchaseContract.class));
purchaserContractRepository.save(purchaserContract);
}