java.lang.IllegalStateException: Existing transaction detected in JobRepository. Please fix this and try again (e.g. remove @Transactional annotations from client).
请针对上述错误发送任何建议。我正在使用 Spring Batch 框架来读取 csv 并将其保存到数据库中。
java.lang.IllegalStateException: Existing transaction detected in JobRepository. Please fix this and try again (e.g. remove @Transactional annotations from client).
请针对上述错误发送任何建议。我正在使用 Spring Batch 框架来读取 csv 并将其保存到数据库中。
如果您jobLauncher.run(job,jobParameters)
从现有事务中执行,您将收到此错误。(这样做的原因是围绕 Spring Batch 处理事务以支持与执行的数据一致性的方式......)
这里有一些解决方法;
@Transactional(propogation=NOT_SUPPORTED)
- 这将在调用此run
方法时将事务标记为“暂停”run
从事务中调用该方法 - 例如,如果您使用 Spring Integration,则可以将 Spring Batch IntegrationJobLaunchingMessageHandler
与队列或任务执行器通道结合使用