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, поэтому получал исключение оптимистической блокировки.