Java 未找到';强制性';调用@scheduled方法后
我有两种方法:Java 未找到';强制性';调用@scheduled方法后,java,spring,transactions,Java,Spring,Transactions,我有两种方法: @Scheduled(cron = "0 * * * * *") @Transactional public void myMethod() { //omited logic without calling repositories or different methods helper.import(new Client()); } 及 一个被安排,一个不被安排。 他们在另一个自动连线组件中调用此方法: @Transactional(propagation =
@Scheduled(cron = "0 * * * * *")
@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
}
@Transactional(propagation = Propagation.MANDATORY)
public Client findClient(Client client) {
//omited logic
}
另一个自动连线组件中的方法findClient(客户端)
:
@Transactional(propagation = Propagation.MANDATORY)
MyObject import(Client client) {
System.out.println("test");
clientManager.findClient(client);
//omited logic
}
@Transactional(propagation = Propagation.MANDATORY)
public Client findClient(Client client) {
//omited logic
}
预期行为:在myMethod
中创建事务,然后使用强制传播事务调用import
,然后使用相同的传播调用findClient
。因此,所有逻辑都在一个事务中执行。当我调用myMethod()而不使用注释@Scheduled时,一切正常
但当它通过@scheduled注释调用时,它属于异常
org.springframework.transaction.IllegalTransactionStateException:对于标记为传播“必需”的事务,未找到任何现有事务。
在尝试调用clientManager.findClient(客户端)后,它会下降成功打印“test”后,import
方法中的code>,这意味着(我认为)事务是在myMethod
中创建的
我试图在myMethod
上删除@Transactional,并将其设置为import
方法,因此,我希望在import
中创建事务,并调用findClient(client)
,强制传播,但结果是相同的异常
请帮忙。我需要这个预定的行为。问题是方法MyObject import(Client-Client)
没有public
修饰符,这就是为什么即使存在@Transactional注释也没有创建事务的原因(我的错,对不起)