我正在通過AJAX從表單更新記錄。我有一個映射到我的實體JSON對象,和我的控制器的方法是:Spring JSON合併
@RequestMapping(value = "/vendors", method = RequestMethod.POST)
public ResponseEntity<String> saveVendorsJson(@RequestParam String vendor) {
Vendor v = Vendor.fromJsonToVendor(vendor);
if (v.merge() == null) {
v.persist();
}
return new ResponseEntity<String>(HttpStatus.OK);
}
我從v.merge()的文件預計將返回null,如果它沒有找到對象的現有記錄'id'字段進行合併,在這種情況下,我想將其作爲新的Vendor對象持久化。
發生了什麼事情,儘管我的JSON具有與現有記錄匹配的'id'字段值,但我始終使用瀏覽器中的更新商品插入新記錄。
我知道我在POST方法拉雙重職責在這裏,這是不嚴格RESTful。理論上,這對我來說更簡單(當然,事實證明情況並非如此)。
我認爲'Vendor'是一個自定義類,它擴展了實現'.merge()'和'.persist()'的東西。你提到的實現類和「文檔」是什麼?如果你上面說的是準確的話,一切看起來都正確並且應該有效。 – 2011-12-21 16:23:17
供應商是由Spring-Roo註釋'@ RooEntity'進行建模的POJO,它是'persist()'方法的來源。 – 2011-12-21 16:28:35
我正在使用的文檔是[here](http://static.springsource.org/spring-roo/reference/html/base-json.html),搜索字符串「merge」。 – 2011-12-21 16:29:42