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, но это не работает.

Есть ли другой способ обновить модель пользователя и не выполнять какую-то дополнительную работу.

Заранее спасибо.

Ответы на вопрос(0)

Ваш ответ на вопрос