我正面臨一個實體的場景用戶其中有一個字段密碼(其中,但這些並不重要)。我想處理2種情景:春季數據休息處理無效字段HandleBeforeSave
- 看跌密碼場實際上應該更新其中一個提供
- PUT沒有密碼字段應該保留密碼完好無損的密碼。
儘管第一種情況正常,但我找不到另一種解決方案。我試過這樣的事件處理程序
@HandleBeforeSave
fun handleUserUpdate(user: User) {
if (user.password == null || user.password == "") {
val storedUser = systemRunner.runInSystemContext { userRepository.findOne(user.id!!) }
user.password = storedUser.password
} else {
user.password = passwordEncoder.encode(user.password)
}
}
但是這不行。 Spring DATA REST已經在所提供的參數中刪除了字段(並且它處於相同的JPA會話中,所以顯然我從DB獲得了相同的結果)。我可能可以請求刷新實體,但是我會放棄其他更改?這個怎麼做?
對於部分更新使用PATCH https://docs.spring.io/spring-data/rest/docs/current/reference/html/#_patch並沒有投入。 https://docs.spring.io/spring-data/rest/docs/current/reference/html/#_put –