我正面临一个实体的场景用户其中有一个字段密码(其中,但这些并不重要)。我想处理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 –