Я предполагаю, что ваша служба вызывает какой-то другой компонент, помеченный @Transactional
, правильно? Если при вызове этого другого компонента возникает исключение и оно попадает в SomeServiceImpl
, вы столкнетесь с описанным вами исключением, когда система транзакций пытается зафиксировать транзакцию в methodB
. Любое исключение, пересекающее границу @Transactional
, помечает окружающую транзакцию только для отката, если вы явно не указали системе обратное.
Если вы хотите, чтобы окружающая транзакция (т. Е. Транзакция, созданная для methodB
) "пережила" это исключение, вам нужно изменить аннотацию @Transactional
для компонента target (т.е. компонент, в который выдается исключение) с noRollbackFor
.