如何在batchUpdate期间覆盖Spring JDBCTemplate的事务超时值

时间:2017-12-12 22:39:48

标签: java spring spring-jdbc jdbctemplate

我正在调用batch batchUpdate,它通常在一次调用中发送超过50个查询,每个更新查询可能会更新10,000个记录。整个过程花费时间并最终导致事务超时异常失败。 springContext.xml中定义的数据源通过@Qualifier注入JdbcTemplate,springContext.xml中定义的事务超时适用于整个应用程序,但在此特定事务中我想覆盖事务超时值在调用batchUpdate方法之前。

@Qualifier("myDataSource")
  @Autowired
  public void setDataSource(DataSource ds) {
    this.jdbc = new JdbcTemplate(ds);
    jdbc.setFetchSize(10000);
    jdbc.setQueryTimeout(0); // zero means there is no limit
  }

  //I want to set custom transaction timeout before calling this from some other methods.
  jdbc.batchUpdate(queries.toArray(new String[0]));

1 个答案:

答案 0 :(得分:1)

使用authorized_keys注释指定超时。

@Transactional

Here是参考文档。