Spring boot PATCH

时间:2017-06-16 10:05:05

标签: spring spring-boot spring-rest

当我阅读文档(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引导来自具有空值的更新字段?

1 个答案:

答案 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不会弄乱您的代码并改变行为。