Обе они вызывают другой метод уровня сервиса с аннотацией @Transactional. Затем метод get вызывает метод репозитория JPA по умолчанию, findById(id), тогда как метод удаления сначала получает блокировку уровня строки с помощью метода JPA:
Код: Выделить всё
@Query("SELECT * FROM item WHERE id = :id FOR UPDATE", nativeQuery= true)
Optional findByIdWithLock(Integer id);
Я бы ожидайте, что вызов get в течение 10 секунд будет ждать завершения удаления, однако он запускается мгновенно.
Есть идеи?
Подробнее здесь: https://stackoverflow.com/questions/790 ... for-update