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

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

Пользователь (браузер) ---------------------------> обновить TARGET 2 ------------ ----->

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

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

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

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

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

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

1 Ответ

0 голосов
/ 30 апреля 2018

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

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

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

...