Поддерживает ли Spring-Boot-Starter-Data-Redis-2.2.1api spring @Transactional с репозиторием Spring Data JPA, например deleteAll из репозитория Crud - PullRequest
0 голосов
/ 08 мая 2020

Я использую подписчик Redis в своем микросервисе, который прослушивает событие и вызывает службу, имеющую метод @Transactional, который далее вызывает метод CrudRepository deleteAll () для удаления из Oracle БД. Он вызывает TranasactionInterceptor и TransactionAspectSupport и запускает метод invokeWithinTransaction, но метод CrudRepository deleteAll не удаляет данные. В журналах это показывает, что не была запущена транзакция org.hibernate.engine.transaction.internal.TransactionImpl, которая требуется CrudRepository для внутреннего выполнения запроса на удаление. Однако, когда та же служба вызывается как HTTP-запрос через контроллер, она начинает внутреннюю транзакцию org.hibernate.engine.transaction.internal.TransactionImpl, а CrudRepository deleteAll работает нормально.

Почему в потоке спящего режима подписчика сообщений Spring Redis внутренняя транзакция не начинается даже после использования аннотации @Transactional. Этот поток работает с потоком с именем «redisContainer-4». Я использую весеннюю загрузку с включенными OSIV, салатом и redis-server5.0.5. Пожалуйста, помогите мне, где именно что-то не так? Заранее спасибо

...