Spring Batch 5 - 不希望它在数据库中自动创建表

问题描述 投票:0回答:1

我正在从 Spring Boot 2 迁移到 Spring Boot 3,并从 Spring Batch 4 迁移到 Spring Batch 5。我不希望 Spring Batch 在我的数据库中创建

BATCH_JOB_INSTANCE
表。

@Autowired
private DataSource dataSource;
   
@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();
}

当我构建项目时,我收到错误:

PreparedStatementCallback; bad SQL grammar [SELECT JOB_INSTANCE_ID, JOB_NAME
FROM BATCH_JOB_INSTANCE
WHERE JOB_NAME = ?
and JOB_KEY = ?]

还有其他人遇到过这个问题吗?

我还没有导入

EnableBatchProcessing
并且没有扩展
DefaultBatchConfiguration

java spring-batch
1个回答
1
投票

内存作业存储库已在 Spring Batch 5 中删除。如果您想使用默认的基于 JDBC 的作业存储库,您需要提供带有批处理表的数据源(手动创建表或让 Spring Boot 为您完成) 。否则,您需要提供自定义作业存储库。

© www.soinside.com 2019 - 2024. All rights reserved.