У меня есть два типа спящего режима: заказ и его элементы (один-ко-многим с каскадом save-update, ничего особенного).Hibernate one-to-many sql order order
Два пользователя инициируют обновление одного и того же заказа путем добавления нового элемента в то же самое время, которое запускает операцию Session.saveOrUpdate (order) в двух параллельных потоках.
Оба заказа и элемента имеют столбец @Version для поддержки оптимистичной блокировки, поэтому это параллельное редактирование завершается с ошибкой OptimisticLockException, как и предполагалось.
Затем я хочу увеличить согласованность базы данных и добавить уникальное ограничение к элементу (в одном из своих столбцов).
Повторяя приведенный выше случай, я получаю нарушение ограничений вместо OptimisticLockException!
Похоже, спящий режим делает это: (! Ограничение voilation)
- ВСТАВИТЬ новый элемент в элемент таблицы
- проверка оптимистичным замок
- стол
порядок UPDATE Можно ли заставить Hibernate проверять оптимистичную блокировку ПЕРЕД добавлением дочерних элементов?