Сеанс Hibernate, сохраняющийся между запросами

Я работаю в системе, где вещи могут и будут меняться за пределами JPA, поэтому мне нужен новый сеанс для каждого запроса, но мое приложение JavaEE, развернутое в TomEE, сохраняет сеансы между запросами, в результате чего объекты, которые кешируются после был обновлен где-то за пределами приложения.

Я попытался создать cfg.xml и получить фабрику сессий таким образом, но меня встретили с исключениями. Я также попытался развернуть класс диспетчера сущностей, чтобы получить фабрику таким образом, но получил исключение, сказав, что класс нельзя развернуть. Я чувствую, что это может быть связано с тем, как TomEE и Hibernate взаимодействуют. Есть ли проблемы с моей текущей настройкой. Или я пытаюсь реализовать сеанс за запрос неправильно,

1 ответ

Решение

Проблема не в сеансе, а в кеше сеанса, поэтому вы можете сделать недействительным кеш сеанса:

session.refresh(entity)

тогда hibernate будет сравнивать данные базы данных и данные объекта сущности, если есть различия, тогда он снова выполнит SQL-запрос.

session.clear()

удалит все из кэша сеанса, поэтому вы не получите старые данные.

Другие вопросы по тегам