我正在从 Spring Boot2 迁移到 Spring Boot3,从 Spring Batch4 迁移到 Spring Batch5。我不希望 Spring Batch 在我的数据库中创建 BATCH_JOB_INSTANCE 表。
@Autowired 私有数据源数据源;
@Bean
@Primary
public PlatformTransactionManager transactionManager() {
final JpaTransactionManager tm = new JpaTransactionManager();
tm.setDataSource(dataSource);
return tm;
}
@Bean(name = "jobRepository")
public JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factoryBean = new JobRepositoryFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTransactionManager(transactionManager());
factoryBean.afterPropertiesSet();
return factoryBean.getObject();
}
@Bean(name = "jobname")
public Job jobname (PlatformTransactionManager transactionManager) throws Exception {
return new JobBuilder("jobname ", createJobRepository())
.start(getAlerteReader(transactionManager))
.next(getAlerteProcess(transactionManager))
.build();
}
当我构建项目时,我有这样的: 准备语句回调;错误的 SQL 语法 [SELECT JOB_INSTANCE_ID, JOB_NAME 来自 BATCH_JOB_INSTANCE 哪里工作名称 = ? 和 JOB_KEY = ?] 有人已经遇到这个问题了吗?
我没有导入 EnableBatchProcessing 也没有扩展 DefaultBatchConfiguration。
内存作业存储库已在 Spring Batch 5 中删除。如果您想使用默认的基于 JDBC 的作业存储库,您需要提供带有批处理表的数据源(手动创建表或让 Spring Boot 为您完成) 。否则,您需要提供自定义作业存储库。