私のコントローラどのように変更された属性のみを更新するために - 春のMVC
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String updateUserById(@PathVariable("id") Long id, Model model) {
User user = userRepository.findOne(id);
model.addAttribute(user);
return "admin/editUser";
}
@RequestMapping(value = "/user/{id}", method = RequestMethod.POST)
@ResponseBody
public String updateUserById(@PathVariable("id") Long id, @ModelAttribute User user) {
userRepository.updateUser(id, user); // with a try catch
}
DAO
@Override
public void updateUser(Long id, User user) {
User userDB = userRepository.findOne(id);
userDB.setFirstName(user.getFirstName());
userDB.setLastName(user.getLastName());
userDB.setEmail(user.getEmail());
userDB.setUsername(user.getUsername());
userRepository.save(userDB);
}
このメソッドは動作しますが、それは私のためにかなり醜いです。ユーザーがビュー内のファーストネームフィールドを変更したばかりで、ファーストネームを設定するために関数を呼び出すためにコードを適用するにはどうすればよいですか?
フィールドに変更があることを通知するObserverパターンのようなものはありますか?
rをハイバーネーションで使用していますか? – Musaddique
はい私はより正確になるために、春のブート - スターター - データ - jpaを使用しています – melkir
私の下の答えを参照してくださいdynamicUpdateを使用して= trueを参照してください。変更された値のみが更新されます。 – Musaddique