В моем весеннем загрузочном приложении у меня есть метод в классе обслуживания, который имеет две транзакции из двух баз данных.Мой внутренний метод выполняет откат правильно, и он вызывает исключение для внешнего метода. Я заметил, что в моей консоли он непрерывно регистрирует два отката операторов после отката внутренней транзакции. Я не могу придумать причину, по которой мой внешний метод откатывается дваждыпосле отлова исключения, сгенерированного внутренним методом.Необязательно: при отладке я заметил, что после второго отката существует еще две синхронизации (включая внутренний откат)
Наружный и внутренний методы находятся в двух разных аннотированных классах @Service. Ниже приведен пример кода.
@Transactional(value = "db1",rollbackFor = Exception.class)
public String outerMethod(){
try{
dao1.updateOne();
service2.innerMethod();
}catch(Exception e){
throw new CustomException();
}
}
Вот внутренний метод обслуживания
@Transactional(value = "db2",rollbackFor = Exception.class)
public String innerMethod(){
dao2.updateTwo();
throw new Exception();
}