Страницы

Поиск по вопросам

вторник, 19 марта 2019 г.

Как БЕЗОПАСНО сбрасывать кэш первого уровня?

Столкнулся с тем, что при редактировании одной из строк, мне при запросе возвращаются старые данные. Как в последствии выяснилось, он банально грузит его заново из кэша 1го уровня. Стал перед нужными запросам сбрасывать его с помощью:
session.clear();
Но теперь возникает проблема при нескольких обновлениях одного и того же объекта:
org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session:
Подсобите, может надо по другому решать эту проблему?


Ответ

Пришлось порыться... Суть в том что после .clear() ошибка срабатывает только при команде .update() или .saveOrUpdate(). Решение я нашел тут. Если коротко то эту команду надо заменить на .merge(Object o)

Комментариев нет:

Отправить комментарий