Не найдена существующая транзакция для «обязательного» после вызова метода @Sheduled - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть 2 метода:

@Scheduled(cron = "0 * * * * *")
@Transactional
public void myMethod() {

  //omited logic without calling repositories or different methods

  helper.import(new Client()); 
}

и

@Transactional
public void myMethod() {

  //omited logic without calling repositories or different methods

  helper.import(new Client()); 
}

Один по расписанию, другой нет.Они вызывают этот метод в другом компоненте с автоматическим подключением:

 @Transactional(propagation = Propagation.MANDATORY)
 MyObject import(Client client) {

     System.out.println("test");

     clientManager.findClient(client);

     //omited logic
}

Метод findClient(Client client) в другом компоненте с автоматическим подключением:

 @Transactional(propagation = Propagation.MANDATORY)
 public Client findClient(Client client) {
     //omited logic
}

Ожидаемое поведение: транзакция создана в myMethod, затем вызывается import с обязательной транзакцией распространения и последующим вызовом findClient с тем же распространением.Итак, вся логика выполнена в одной транзакции.И когда я вызываю myMethod () без аннотации @Sheduled, все работает нормально.

Но когда он вызывает аннотацией @Sheduled, он попадает в исключение org.springframework.transaction.IllegalTransactionStateException: No existing transaction found for transaction marked with propagation 'mandatory' Он падает после попытки вызова clientManager.findClient(client); в import методепосле успешной печати «test», что означает (я думаю) транзакция была создана в myMethod.

Я попытался удалить @Transactional для myMethod и установить для него метод import, поэтому ожидается создание транзакции в import и вызов findClient(client) с обязательным распространением, но это приводит к тому же исключению.

Пожалуйста, помогите.Мне нужно это запланированное поведение.

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