В этом методе вызываются два метода сервиса(ов) (один и тот же или разные сервиса не важно). Оба метода в сервисе(ах) имеют аннотацию @Transactional, а значит на каждый вызов метода будут созданы свои транзакции. И как следствие этого, если второй метод свалится с ошибкой - изменения в бд, сделанные первый методом, не будут отменены.
Как это можно исправить? Может я чего-то не понимаю в логике работы транзакций.
сделать ещё один слой (например фасад) с Transactional методом и вызывать оба метода сервисов оттуда тогда они будут выполняться в одной транзакции(если явно не настроено другое)
без сервисов оберток не обойтись?
ну если сильно охото можешь контроллер аннотировать но не советую, тогда будет негде перехватывать ошибки коммита транзакции
Да. Этот вариант мне не нравится. Спасибо.
Обсуждают сегодня