Гибернация: включите выигрыши первого и последнего фиксации в разных модулях - PullRequest
1 голос
/ 07 марта 2012

У меня есть проект с двумя модулями.Один будет выставлен пользователю, а другой нет.Другой - это модуль пакетной обработки.Два модуля используют один и тот же набор классов моделей.

Модуль, доступный для пользователя, должен использовать стратегию выигрыша fist-commit, чтобы исключение StaleObjectStateException вызывалось при одновременном изменении записи, и мы можем ее обработать.Принимая во внимание, что в пакетном модуле не должно быть никакого исключения, просто последний коммит переопределит предыдущий.

Но так как два модуля используют одни и те же классы моделей, в классах моделей включено управление версиями в спящем режиме.Так что стратегия выигрыша при первом коммите всегда включена.

Есть ли способ настроить разные стратегии для двух модулей.

Большое спасибо.

1 Ответ

0 голосов
/ 07 марта 2012

Вы должны управлять им внутри блока захвата StaleObjectStateException.

try{
    ..............//Your code...
    session.saveOrUpdate(bean);

} catch (StaleObjectStateException e){

        if(forceUpdate){
            long version = getLatestVersionFromDB(bean);
            bean.setVersion(version)
            session.saveOrUpdate(bean);
        }
}
...