Вопрос:Spring Hibernate лучший способ справиться с модифицирующими запросами в сеансе
В рамках сессии, если мы должны использовать запрос модифицирующего такие как обновление, это изменение не будет виден в рамках сеанса. Один из способов сделать его видимым - установить изменяющийся запрос на clearAutomatically = true в аннотации @Modifying. Проблема в том, что это изменение повлияет на все изменения в одном сеансе, то есть объекты, которые уже были сохранены до этого вызова, будут аннулированы, а измененные не будут сохраняться после закрытия транзакции.
Мой вопрос: какой лучший способ справиться с этой проблемой, когда clearAutomatically не является вариантом?
Итак, вы говорите, что если выполнить флеш перед запуском запроса с clearAutomatically = true, мы не потеряем никаких изменений? Каков наилучший флеш-режим для этого? Благодаря! – rpvilao
Если вы используете Hibernate, как предполагает предмет, тогда вам не нужно использовать метаданные @Modifying, которые выглядят как JPA, а не Hibernate. Вам просто нужно оставить AUTO flushmode, но если вы получаете устаревшие данные в запросе, выполните Session.flush() перед запуском запроса, хотя AUTO будет очищаться до большинства запросов. Вам нужно будет убедиться, что вы не изменяете отдельные или временные объекты. – itguysouth
Кажется, это имеет смысл. Благодарю. Я также подтвердил, что это происходит только с обновлениями, а не с вставками, но я не могу подтвердить, связано ли это. Я собираюсь принять это сейчас. – rpvilao