hibernate оптимистическая блокировка: другое обновление потока между 2 обновлениями в текущем потоке

Временная шкала выглядит так:

Пользователь (браузер) ---------------------------> обновить ЦЕЛЬ 2 --------------- ->

Тема ------> обновить TARGET 1 ---------> long_operation -----> обновить TARGET 3

Я запускаю поток для выполнения long_operation и обновляю объект TARGET до и после операции.

Проблема в том, что во время long_operation пользователь может обновить TARGET в пользовательском интерфейсе. Поэтому, когда я пытаюсь обновить TARGET после long_operation, я получаю исключение оптимистической блокировки.

Я использую номер версии для оптимистической блокировки, а обновление 2 находится в транзакции.

Я попытался сделать обновление 1 и 3 в другой транзакции -> не работает. Я также пытался обновить номер версии, прежде чем делать update_3 -> не работает.

Не уверен, что правильно делать здесь....

1 ответ

Я понимаю, что я сделал не так.

Мне нужно удалить объект TARGET из кэша и перечитать его из базы данных, чтобы получить последнюю версию, прежде чем выполнять update_3.

до того, как я обновлял "старый" TARGET, поэтому получал исключение оптимистической блокировки.

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