mio regolatoreCome aggiornare solo gli attributi che sono stati modificati - Spring 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
}
Il 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);
}
questo metodo funziona, ma è abbastanza brutto per me. Supponiamo che l'utente abbia appena modificato il campo nome nella vista, come posso adattare il mio codice per chiamare solo la funzione per impostare il nome?
Qualcosa come il pattern Observer per notificare i campi che sono cambiati?
r usando ibernazione? – Musaddique
sì sto usando l'ibernazione, spring-boot-starter-data-jpa per essere più precisi – melkir
vedi la mia risposta qui sotto uso dynamicUpdate = true. aggiornerà solo i valori modificati. – Musaddique