搜尋

首頁  >  問答  >  主體

java - spring-data Jpa 不需要執行save 語句,Set欄位就可以自動執行已儲存的方法?求解

public Optional<User> requestPasswordReset(String mail) {
    return userRepository.findOneByEmail(mail)
        .filter(User::getActivated) 
        .map(user -> {// updata
            user.setResetKey(RandomUtil.generateResetKey());
            user.setResetDate(Instant.now()); 
            return user;
        });
    
}

//進入斷點,透過後端查看列印結果,發現先執行select語句,然後又執行update語句,我不是很明白為什麼set以後
//不需要save方法,就可以update

跟程式碼以後,走到這個方法,就執行update語句,求那位大神看見,教下我,本人非常感謝!一定一定要關注你。

#
仅有的幸福仅有的幸福2761 天前1476

全部回覆(3)我來回復

  • phpcn_u1582

    phpcn_u15822017-06-30 09:57:20

    從你的截圖來看,我並沒看到哪裡執行了update語句。依照我的使用經驗來看,是要呼叫save方法才會更新的

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-30 09:57:20

    回覆
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-30 09:57:20

    應該是JPA發現你的物件dirty,在Transaction commit之前自動執行了。

    回覆
    0
  • 取消回覆