【问题标题】:How to change spring batch Transaction Isolation level如何更改春季批处理事务隔离级别
【发布时间】:2018-04-12 19:25:40
【问题描述】:

我正在尝试使用以下代码使用 JobLauncher 启动工作

    @RestController
    public class SystemController
    {
        static Logger logger = LoggerFactory.getLogger(SystemController.class);

        JobExecution jobExecution;  
        @Autowired
        JobLauncher jobLauncher;

        @Autowired
        Job job;



        @RequestMapping(value ="/abccontext" ,method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
        @ResponseBody
        public String handleResquest(@RequestBody final Data resData)
                throws Exception
        {

                JobParameters parameters = new JobParametersBuilder().addString("date", dateFormat.format(date)).addLong("time", Long.valueOf(System.currentTimeMillis())).toJobParameters();

    jobLauncher.run(job, parameters);
            }
}

我在 batchjob.xml 中配置了具有相同 ID 的作业

批处理作业.xml

<job id="job">
// steps

</job>

有时我收到以下提到的错误消息

PreparedStatementCallback; SQL [插入到 BATCH_JOB_INSTANCE(JOB_INSTANCE_ID, JOB_NAME, JOB_KEY, VERSION) 值 (?, ?, ?, ?)]; ORA-08177: 无法序列化此事务的访问 ;嵌套异常是 java.sql.SQLException: ORA-08177: can't 序列化此事务的访问权限

数据库:oracle 11g,

所以我想将隔离级别更改为 READ_COMMITTED。

任何帮助都将是可观的。谢谢

【问题讨论】:

    标签: spring hibernate spring-boot spring-data-jpa spring-batch


    【解决方案1】:

    您需要在作业存储库级别进行设置

    <batch:job-repository 
        id="jobRepository"
        data-source="your-dataSource" 
        transaction-manager="your-transactionManager"
        isolation-level-for-create="READ_COMMITTED" />  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-26
      • 2014-12-15
      • 2018-05-27
      • 2015-05-13
      • 2017-06-25
      • 2019-03-17
      • 2013-10-16
      • 2017-10-06
      相关资源
      最近更新 更多