快速使用Spring Batch和Spring Boot只想使用注释。让演示应用程序https://spring.io/guides/gs/batch-processing/工作,使用hsqldb并且全部工作。之后我选择切换到oracle。我想使用存储库数据库表,因为我们的旧工作已经完成。当我切换到oracle 11g时,插入器进入spring批处理表会抱怨SERILIZABLE。因此,昨天花了很多时间来追逐这个,我明白我可能需要在jobrepository上设置隔离级别。问题是没有网站进入这个,显示xml / java的文档也没有明确解释。我查看Spring Batch github中的示例,但也找不到任何内容。是否有一个如何创建和作业存储库并更改此隔离级别的示例?此时燃烧时间没有前进动作。
尝试以下代码设置隔离并获取:BatchConfigurationException:java.lang.IllegalArgumentException:无效的事务属性标记:[READ_COMMITTED]
public class BatchConfiguration extends DefaultBatchConfigurer {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
private PlatformTransactionManager transactionManager;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
private DataSource dataSource;
@Override
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager);
factory.setIsolationLevelForCreate("READ_COMMITTED");
// factory.setTablePrefix("BATCH_");
factory.setMaxVarCharLength(1000);
return factory.getObject();
}
@Bean
public JdbcCursorItemReader<BusnPrtnr> itemReader() {
return new JdbcCursorItemReaderBuilder<BusnPrtnr>()
.dataSource(dataSource)
...
答案 0 :(得分:1)
此处的Java代码示例中存在错误:https://docs.spring.io/spring-batch/4.0.x/reference/html/job.html#txConfigForJobRepository
应该是factory.setIsolationLevelForCreate("ISOLATION_REPEATABLE_READ");
而不是factory.setIsolationLevelForCreate("REPEATABLE_READ");
。
XML代码示例是正确的(XML解析器adds场景后面的ISOLATION_
前缀。)
此处有一个解决此问题的拉取请求:https://github.com/spring-projects/spring-batch/pull/577/files#diff-de2cb44d4395c5ad35d1fc05bbace8f1R620
修复程序将是4.0.1版本的一部分。