2 回答

TA貢獻1828條經(jīng)驗 獲得超6個贊
您正在獲取數(shù)據(jù)并將其傳遞到existingCaseData
并保存uiOutboundErrorCaseData
。所以我的猜測是 Hibernate 正在使用新的 Id 和更新的值將一個新對象添加到數(shù)據(jù)庫中。這當然取決于您的模型定義。尤其是id
。
我還認為,如果 Hibernate Session 中已經(jīng)有一個與該 id 關(guān)聯(lián)的對象,Hibernate 不會讓您uiOutboundErrorCaseData
使用相同的 id 進行保存。那么,為什么不existingCaseData
使用新值進行更新并將其保存回來。

TA貢獻1872條經(jīng)驗 獲得超4個贊
我創(chuàng)建了一個可行的解決方案,盡管我意識到它可以改進,但它確實有效。唯一的缺點是我需要指定所有可以更新的字段,理想情況下我想要一個包含 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);
添加回答
舉報