Принудительное обновление в Hibernate - PullRequest
10 голосов
/ 03 марта 2010

Как заставить Hibernate обновить экземпляр объекта, даже если объект не грязный? Я использую Hibernate 3.3.2 GA, Hibernate Annotations и Hibernate EntityManager, кстати. Я действительно хочу, чтобы Hibernate выполнил универсальный оператор UPDATE, даже если никакое свойство объекта не изменилось.

Мне это нужно, потому что некоторые прослушиватели событий должны вызываться для выполнения некоторой дополнительной работы при первом запуске приложения.

Спасибо!

Ответы [ 4 ]

11 голосов
/ 03 марта 2010

ок - нашел сам.Это делает трюк:

Session session = (Session)entityManager.getDelegate();  
session.evict(entity);  
session.update(entity);
4 голосов
/ 11 июня 2010

Для переходных процессов вы можете проверить

if(session.contains(entity)) {
  session.evict(entity);
}
session.update(entity);
2 голосов
/ 08 мая 2010
session.evict(entity);  
session.update(entity);

Хороший трюк, но следите за переходными объектами, прежде чем вставлять это в некоторый код автоматизации. Для переходных процессов у меня есть тогда StaleStateObjectException

0 голосов
/ 03 марта 2010

Попробуйте em.flush (), который используется для сущностей EJB 3.0, который также использует JPA, аналогичный Hibernate 3.2.2 GA.Если это не работает нормально, используйте транзакции в сборе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...