После миграции с весны с 2,7 по 3.3 у меня возникает проблема с оптимистом блокировкой в этом конкретном случае.
он не работает, когда я приношу сущность из базы данных в новой транзакции < /p>
@Entity
class MyEntity{
@Id
long id;
@Version
Long version;
}
class A {
private B bService;
@Transactional(readOnly = true)
public void execute() {
try {
bService.begin(10);
} catch (OptimisticLockingFailureException e) {
log.... //this is never catch at spring 3.3
}
}
class B {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public MyEntity begin(Long id) {
MyEntity freshMyEntity = repository.findAwaiting(id)
.orElseThrow(EntityNotFoundException::new);
// at this moment another transaction commit entity with the same ID
// or when I pause this and commit it manualy in database
// both case increased version field
return repository.save(freshMyEntity);
}
< /code>
блокировка работает, когда я удаляю извлечение объекта Repository.findawaiting < /code> и сущность составляет как метод начала параметра.
Я что -то пропускаю? Это похоже на ошибку, неверно?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ransaction