У меня есть класс обслуживания, в котором один общедоступный метод вызывает другой метод в том же классе. Я заметил, что если второй метод имеет @Transactional, транзакция не создается и изменения в базе данных не откатываются при возникновении исключения.
Вот упрощенная версия моего кода:
Java
Код: Выделить всё
@Service
public class UserService {
public void myMethod1() {
// ...
myMethod2();
}
@Transactional
public void myMethod2() {
// ...
}
}
Мои вопросы:
- Почему Spring игнорирует @Transactional, когда вызов является внутренним (самовызов)?
- Что такое рекомендуемый способ справиться с этим, если мне все еще нужно сохранить логику в одной службе? Является ли перенос его в другой сервис единственным «чистым» решением?
Подробнее здесь: https://stackoverflow.com/questions/798 ... thin-the-s
Мобильная версия