@satmurat

Как можно достать «свежие» данные из hibernate?

Проблема такая: у меня есть БД MySQL. Сначала первое приложение на Java запустится, в нем hibernate на БД1. Затем другое приложение обновляет записи в этой же БД1. После этого, при попытке достать обновленные данные в первом приложении через SQL-запрос, hibernate по-прежнему возвращает старые данные, как будто из кэша. Гугл не помог: пробовал отключить кэш 2 уровня, session.clear() итп. В чем может быть проблема?
Query query = session.createSQLQuery("select id from users where city = 'Moscow' limit 1");
List result = query.list();
  • Вопрос задан
  • 2858 просмотров
Решения вопроса 1
@DieMust
А делали session.flush() или transaction.commit() (смотря как у себя реализуете запросы) после того, как отправили новые данные?
Методы save и saveOrUpdate отправляют информацию в кэш, после надо подтвердить запрос, чтобы он исполнился.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@NightFantom
Вот как должно быть при изменении данных:
Session sess = factory.openSession();
 Transaction tx;
 try {
     tx = sess.beginTransaction();
     //do some work
     ...
     tx.commit();
 }
 catch (Exception e) {
     if (tx!=null) tx.rollback();
     throw e;
 }
 finally {
     sess.close();
 }

Источник
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы