2017-06-16 93 views
1

当我读到弗朗文档(https://spring.io/guides/gs/accessing-data-rest/春天开机PATCH

PUT代替整个记录。未提供的字段将被替换为 ,为空。 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

如何防止从空值更新字段弹簧启动?

+0

'userRepository.save(department)'什么是'department'?你的意思是'userRepository.save(user)'? –

+1

您所链接的指南是关于为您提供RESTful端点的Spring Data REST。在你的问题中,你已经编写了你自己的端点,以决定PATCH应该如何表现 –

回答

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 data rest公开的端点,而不是您所做的自定义端点。 当你创建一个自定义端点时,它将完成你要做的事情,春天不会弄乱你的代码并改变行为。

+0

我找不到任何有用的信息。你能举一些例子吗? – Sever

+0

@Sever你可以在项目的官方网页上找到很多信息 - http://projects.spring.io/spring-data-rest/和http://projects.spring.io/spring-data-jpa /你可能想检查项目的概念(他们应该做的)。你已经找到的指南也是一个很好的资源。 –

+0

嗨,是否有可能有一个自定义http端点,但仍然春季更新实体与HTTP请求中的新值?所以我可以手动处理客户方法中现在更新的实体? – user2049132