Spring Data JPA: как элегантно обновить модель?
Моя модель такая:
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="email")
private String email;
@Column(name = "weblink")
private String webLink;
//getter & setter
}
мы собираем данные формы или мобильные данные с помощью http-запроса, и springmvc передает эти данные пользователю, похожему на модель.
например, у меня есть запрос как это:
http://localhost:8080/update?id=1919&[email protected]
в контроллере URL запроса и его параметры будут автоматически переданыUser
объект.
@RequestMapping(method = RequestMethod.GET, value = "/update0")
public User update(@ModelAttribute("User") User user){
System.out.println(user.getId());
System.out.println(user.getEmail());
System.out.println(user.getWebLink());
return userRepository.save(test);
}
если у меня есть запись в mysql, идентификатор которой 1919, и столбцы (id, email, weblik) имеют значения.
как вы видите, пользовательский объект, который передается через Интернет или мобильный телефон, имеет два свойства
http://localhost:8080/update?id=1919&[email protected]
Идентификатор и адрес электронной почты имеют значения, а веб-ссылка не имеет.
Итак, если я выполнюsave
метод, столбцы электронной почты будут обновлены до[email protected]
и поле weblik также будет обновлено доNULL
, но я не хочу обновлять это поле, я просто хочу обновить поле электронной почты.
У меня есть два способа решить проблему, но все они не изящны.
5.1 сначала загрузите объект пользователя и обновите
User userExist = userRepository.findOne(user.getId());
userExist.setEmail(user.getEmail());
//or using
//BeanUtil.copyProprty(formDto,modle)
userRepository.save();
5.2 используя@DynamicUpdate
, но это не работает.
Есть ли другой способ обновить модель пользователя и не выполнять какую-то дополнительную работу.
Заранее спасибо.