英文:
SpringBoot + Batch + Cloud Task @EnableTask annotation with single datasource causes "Sequence does not exist" Issue
问题
目前我正在使用 SpringBoot(2.3.3 版本)和 Batch(4.2.4 版本),以及 spring-cloud-starter-tsk(2.2.3 版本)与单数据源(Oracle)。我的 BatchConfiguration 扩展了 DefaultBatchConfigurer 并进行了 setDataSource 设置。现在我正在尝试连接 Oracle 数据库,读取记录并生成平面文件。
我遇到了以下错误,奇怪的是我能够获得数据源,并且数据库中有 SEQUENCE(TASK_SEQ)可用。
请在下面找到我的其他文件:
- BatchConfiguraton.java 如下:
// 代码部分,不翻译
- Application.java 如下:
// 代码部分,不翻译
-application.yml 如下:
// 代码部分,不翻译
英文:
Currently I'm using the SpringBoot ( 2.3.3 Version ) and Batch ( 4.2.4 Version ) and spring-cloud-starter-tsk ( 2.2.3 Version ) with Single Datasource ( oracle ). My BatchConfiguration extends the DefaultBatchConfigurer and made setDataSource. Now I'm trying to connect the Oracle DB and read records & generate the flatfile.
I'm getting below error and strange thing is I'm able to get the datasource and SEQUENCE (TASK_SEQ ) is available in DB.
Please find my other files below
- BatchConfiguraton.java is
答案1
得分: 2
在您的批处理配置中,您正在使用 MapJobRepositoryFactoryBean
,它会在内存中创建基于映射的作业存储库。您需要将其移除,并按照参考文档中的说明,使用指向您的 Oracle 数据源的基于 JDBC 的作业存储库:配置 Job 存储库。
在运行作业之前,您需要确保在您的 Oracle 数据库中创建了 Spring Batch 元数据表。
同样的配置也适用于 Spring Cloud Task。
英文:
In your batch configuration, you are using the MapJobRepositoryFactoryBean
which creates a Map-based JobRepository in-memory. You need to remove this and use the JDBC based job repository pointing to your Oracle datasource as described in the reference documentation: Configuring a JobRepository.
You need to make sure that Spring Batch meta-data tables are created in your Oracle database before running your job.
The same configuration should be done for Spring Cloud Task as well.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论