Приложение Spring-Boot - @Transactional не работает

У меня проблема с моим приложением Spring-Boot. Я пытаюсь отправить уведомление после того, как получу результат от своей функции с @Transactional, но @Transactional не работает, откат не работает. Это код.

@Service
public class ParkingServiceImpl implements ParkingService {

   @Override
   public void getParkingFromBOAsyncWrapper() {
         ArrayList<BOUserParking> listUserParkingfromBO = getParkingFromBOTransaction();

        /** Send notification **/
        if (listUserParkingfromBO!=null){
             notificationService.sendNotification(listUserParkingfromBO);
        }
   }


   @Transactional
   @Override
   public ArrayList<BOUserParking> getParkingFromBOTransaction() {
              // .... insert or update on db
   }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
724
2

Ответы 2

Транзакционный не будет работать, если вызывается в том же классе. Транзакционный (и аналогичный, например, Async) работает через создание прокси между вызывающими классами. Вы должны вызвать его из другого класса, чтобы получить транзакционную функциональность.

Я бы переместил ваши вызовы DAO в RespositoryService, который обрабатывает транзакции.

Поместите аннотацию @Transactional внутри метода класса DAO, а не в класс.

Другие вопросы по теме