Изменение режима Hibernate Session.FlushMode во время сеанса

Мое приложение использует FlushMode.AUTO, Для конкретного вызова метода службы я хочу изменить Hibernate Session.FlushMode в FlushMode.COMMIT и вернуться к FlushMode.AUTO когда метод завершится.

Вопрос:- Есть ли проблемы / опасности изменения FlushMode во время сеанса?

Причина изменения FlushMode во время сеанса:- Я использую Hibernate Interceptor Approach (onFlushDirty) для аудита изменений. При использовании FlushMode.AUTO происходит несколько сессий сбоев (поведение FlushMode.AUTO) Следовательно, onFlushDirty вызывается несколько раз, что приводит к дублированию аудита. Я обойти выше проблемы, изменив FlushMode в COMMIT в методе, где я ожидаю, что одитинг произойдет.

1 ответ

Самая распространенная причина запуска автоматического сброса - это когда вы выполняете запрос во время выполнения. Если Hibernate обнаруживает, что некоторые из ваших не очищенных изменений в сеансе могут повлиять на результат вашего запроса, то он автоматически вызывает сброс. Поэтому, когда ваш запрос выполняется, он получает данные, которые соответствуют изменениям, которые вы внесли в сеанс.

Таким образом, это зависит от того, что делает ваш код. Если это поведение не влияет на функциональность, то все должно быть в порядке.

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