AJAX を介してフォームからレコードを更新しています。エンティティにマップする 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);
}
オブジェクトの「id」フィールドでマージする既存のレコードが見つからなかった場合、 v.merge() が null を返すことをドキュメントから期待していました。その場合、それを新しい Vendor オブジェクトとして永続化したいと考えています。
私のJSONには既存のレコードと一致する「id」フィールド値がありますが、ブラウザから更新された商品で常に新しいレコードを挿入しています。
ここでは POST メソッドに 2 つの役割を持たせていることは承知していますが、これは厳密には RESTful ではありません。理論的には、これは私にとってより簡単です (もちろん、そうではないことが判明しています)。