2 回答

TA贡献1828条经验 获得超6个赞
您正在获取数据并将其传递到existingCaseData
并保存uiOutboundErrorCaseData
。所以我的猜测是 Hibernate 正在使用新的 Id 和更新的值将一个新对象添加到数据库中。这当然取决于您的模型定义。尤其是id
。
我还认为,如果 Hibernate Session 中已经有一个与该 id 关联的对象,Hibernate 不会让您uiOutboundErrorCaseData
使用相同的 id 进行保存。那么,为什么不existingCaseData
使用新值进行更新并将其保存回来。

TA贡献1872条经验 获得超3个赞
我创建了一个可行的解决方案,尽管我意识到它可以改进,但它确实有效。唯一的缺点是我需要指定所有可以更新的字段,理想情况下我想要一个包含 n 个字段并更新记录的解决方案。
OutboundErrorCaseData existingCaseDta = ErrorCaseDataRepository.findById(caseNumber).get();
if (outboundErrorCaseVO.getChannel() != null) {
existingCaseDta.setChannel(outboundErrorCaseVO.getChannel());
}
ErrorCaseDataRepository.save(existingCaseDta);
ModelMapper mm = new ModelMapper();
return mm.map(existingCaseDta, StoredOutboundErrorCaseVO.class);
添加回答
举报