Откат @Transactional не работает в SpringBoot - PullRequest
0 голосов
/ 21 октября 2019

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

@Transactional
class {

void updateMessageResult() {
    Message updatedMessage = messageService.updateResult(message, messageQueueDto);
    messagePublisher.publishEvent(updatedMessage);
 }
}

В publishEvent он принудительно выбрасывает обновление RuntimeException

public void publishEvent()  {
throw new RuntimeException();
}

: я попробовал предложения, но он все равно не будет откатываться

Ответы [ 3 ]

1 голос
/ 21 октября 2019

Включили ли вы управление транзакциями в своем проекте?

Например, аннотирование вашего класса конфигурации с помощью @ EnableTransactionManagement

Еще одна вещь: откат транзакции с @Transactional работает только с RuntimeException (или его подклассом) по умолчанию,Убедитесь, что выбрасываемое вами исключение - RuntimeException

0 голосов
/ 22 октября 2019

Извините за публикацию неправильного кода. Я просто набрал код вместо копирования и вставил его.

Ответ - я забыл добавить метод доступа (или общедоступный) для метода.

Спасибо!

0 голосов
/ 21 октября 2019

Используйте @ Transactional аннотацию на уровне метода, на котором вы хотите выполнить транзакцию. Это должно работать.

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