快速了解 SpringBatch 和 Spring Boot 想要只使用注释。让使用hsqldb的演示应用程序 https://spring.io/guides/gs/batch-processing/工作并且全部工作。之后,我选择切换到甲骨文。我想像我们的旧作业一样使用存储库数据库表。当我切换到oracle 11g时,弹簧批处理表中的插入器抱怨SERILIZABLE。所以昨天花了很大一部分时间追逐这个,我知道我可能需要在 jobrepository 上设置隔离级别。问题是没有网站进入这个,显示 xml/java 的文档也没有清楚地解释。我查看了Spring Batch github的示例,但在那里也找不到任何东西。是否有有关如何创建和作业存储库并为此更改隔离级别的示例?此时燃烧的时间没有向前移动。
尝试了下面的代码设置隔离并获取:批处理配置异常: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)
...
这里的 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 解析器在后台添加ISOLATION_
前缀)。
这里有一个拉取请求可以解决此问题:https://github.com/spring-projects/spring-batch/pull/577/files#diff-de2cb44d4395c5ad35d1fc05bbace8f1R620
此修复程序将成为 4.0.1 版本的一部分。