Страницы

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

воскресенье, 26 января 2020 г.

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

#java #hibernate


Столкнулся с тем, что при редактировании одной из строк, мне при запросе возвращаются
старые данные.
Как в последствии выяснилось, он банально грузит его заново из кэша 1го уровня.
Стал перед нужными запросам сбрасывать его с помощью:

session.clear();


Но теперь возникает проблема при нескольких обновлениях одного и того же объекта:

org.hibernate.NonUniqueObjectException: a different object with the same identifier
value     was already associated with the session:


Подсобите, может надо по другому решать эту проблему?
    


Ответы

Ответ 1



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

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

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