2017-06-16 95 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