第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何僅更新字段的子集并更新存儲庫?

如何僅更新字段的子集并更新存儲庫?

郎朗坤 2023-10-12 17:30:43
我正在制作一個 Spring Boot 應用程序,并且希望通過我的服務和控制器更新數(shù)據(jù)庫中的現(xiàn)有條目。在我的服務層中,我有以下方法。因此,我檢索與 caseID 關(guān)聯(lián)的字段,創(chuàng)建一個模型映射器,將實體對象類映射到我的 VO,然后將檢索到的數(shù)據(jù)映射到我的 DTO。然后我保存我的存儲庫。目的是僅添加我在請求消息中指定的字段,即如果我只想更新 20 個字段中的 1 個字段,它將更新此字段并保持其余字段不變。下面的代碼運行成功,但是我在郵遞員的請求消息中指定的字段不會在數(shù)據(jù)庫中更新。為什么是這樣?我嘗試映射不同的對象并將不同的變量保存到存儲庫,但似乎沒有任何內(nèi)容可以更新數(shù)據(jù)庫。public StoredOutboundErrorCaseVO updateCase(OutboundErrorCaseVO outboundErrorCaseVO, Long caseNumber) {    OutboundErrorCaseData existingCaseData = ErrorCaseDataRepository.findById(caseNumber).get();    ModelMapper mm = new ModelMapper();    mm.getConfiguration().setAmbiguityIgnored(true);    OutboundErrorCaseData uiOutboundErrorCaseData = mm.map(outboundErrorCaseVO,            OutboundErrorCaseData.class);    mm.map(existingCaseData, uiOutboundErrorCaseData);    ErrorCaseDataRepository.save(uiOutboundErrorCaseData);    return mm.map(uiOutboundErrorCaseData, StoredOutboundErrorCaseVO.class);}控制器 - 為簡潔起見,省略代碼,POST 方法(我通常使用 PUT 進行更新,但我相信我仍然可以使用 POST)    StoredOutboundErrorCaseVO updatedCase = outboundErrorService.updateCase(outboundErrorCaseVO,            caseNumber);回購協(xié)議    @Repositorypublic interface OutboundErrorCaseDataRepository extends JpaRepository<OutboundErrorCaseData, Long> {
查看完整描述

2 回答

?
30秒到達戰(zhàn)場

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使用新值進行更新并將其保存回來。


查看完整回答
反對 回復 2023-10-12
?
守著一只汪

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);


查看完整回答
反對 回復 2023-10-12
  • 2 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號