OptimisticLockException с использованием @Version против ConcurrentModificationException - PullRequest
0 голосов
/ 28 мая 2019

У меня есть сущность:

@Entity
public class Book {

    @Version
    private Integer version;

}

В параллельной транзакции у меня возникает ошибка OptimisticLockException, поскольку я использовал атрибут @Version. Без @Version у меня есть ошибка: ConcurrentModificationException.

В чем разница между OptimisticLockException и ConcurrentModificationException?

1 Ответ

0 голосов
/ 28 мая 2019

OptimisticLockException и ConcurrentModificationException (я полагаю, это от java.util) - два совершенно разных исключения, которые не взаимозаменяемы.

Первый, как следует из его названия, связан с оптимистической блокировкой, которая в основном означает, что другая транзакция зафиксировала изменения в сущностях, которые вы пытались обновить.

Второй объект выдается при одновременной модификации объекта, когда такая модификация недопустима. Например, когда вы пытаетесь удалить элемент из коллекции, через которую вы проходите. Я не могу вывести из предоставленного вами фрагмента, что именно вызывает это исключение в вашем случае, но оно не связано с оптимистической блокировкой и JPA в целом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...