Я использую JPA2.0 с Hibernate.
Например, у меня есть объект JPA для таблицы ниже:
User [userId, userName, userAddress]
Я могу получить пользовательский объект, используя метод find():
User user = entityManager.find(User.class , 1L); // 1L is user id
Теперь, если я изменю любое пользовательское состояние (скажем, имя пользователя) на том же пользовательском объекте, который я выбрал выше:
user.setUserName("Narendra");
И выполните слияние с помощью метода merge():
entityManager.merge(user);
Слияние выполняется успешно с нижеследующим запросом, который запускается JPA/спящий режим при слиянии:
Hibernate: update User set USERID =?, USERNAME=?, USERADDRESS=? where USERID=?
Вот мой вопрос: если я изменил только состояние имени пользователя в сущности пользователя, я не изменил userId, userAddress и т.д. JPA должен был запустить ниже запроса (только для изменения имени пользователя), а не над запросом.
Hibernate: update User set USERNAME=? where USERID=?
Есть идеи на нем?