当我阅读文档(https://spring.io/guides/gs/accessing-data-rest/)
时PUT替换整个记录。未提供的字段将被替换 用null。 PATCH可用于更新项目的子集。
因此,我尝试将PATCH用于具有2个字段(姓名和姓氏)的用户实体
@RequestMapping(path="/user/{id}", method = RequestMethod.PATCH)
public User updateUser ( User user) {
return userRepository.save(user);
}
当我发送给:
本地主机:8080 /用户/ 34
身体name: "user" and surname: "testSurname"
效果很好。
但是当我只发送name (without surname)
时,姓氏也会更新为 null 。
如何阻止Spring引导来自具有空值的更新字段?
答案 0 :(得分:2)
您在这里没有使用Spring Data Rest。您正在使用spring data jpa repository userRepository.save(department);
和Spring MVC创建自定义http端点。
@RequestMapping(path="/user/{id}", method = RequestMethod.PATCH)
public User updateUser ( User user) {...
要查看您描述的修补程序行为,您必须使用由spring数据rests公开的端点,而不是您已经创建的自定义端点。 当您创建自定义端点时,它将完全按照您的代码执行操作,Spring不会弄乱您的代码并改变行为。