【问题标题】:How do I use a date job parameter in Grails spring batch & SQL?如何在 Grails spring batch & SQL 中使用日期作业参数?
【发布时间】:2015-05-20 09:53:51
【问题描述】:

我想使用 2 个使用 Spring Batch 后期绑定的日期作业参数执行查询。

JobParametersBuilder builder = new JobParametersBuilder()
builder.addDate("until", until);
builder.addDate("start", start);
JobExecution exec = jobLauncher.run(myJob, builder.toJobParameters())

我的豆子/工作定义:

myReader(JdbcPagingItemReader) { bean ->
    bean.scope = 'step'
    bean.autowire = 'byName'
    dataSource = ref('dataSource')
    queryProvider = ref('sqlPagingQueryProviderFactoryBean')
    parameterValues = [
            start: "#{jobParameters['start']}",
            until: "#{jobParameters['until']}"
    ]
    pageSize = '10'
    rowMapper = ref('myRowMapper') // not shown here
}


sqlPagingQueryProviderFactoryBean(SqlPagingQueryProviderFactoryBean) { bean ->
    bean.autowire = 'byName'
    bean.scope = 'step'
    dataSource = ref('dataSource')
    selectClause = 'some_timestamp, column2'
    fromClause = 'some_table'
    whereClause = 'some_timestamp >= cast(:start as timestamp) AND some_timestamp < cast(:until as timestamp)'
    sortKey = 'some_timestamp'
}

我遇到了各种各样的错误,具体取决于我如何转换时间戳等,例如(对于上面的代码):

step.AbstractStep 在作业中执行步骤 myStep 时遇到错误 myJob org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [SELECT some_timestamp, column2 FROM some_table WHERE some_timestamp >= cast(? as timestamp) AND some_timestamp

请问如何访问我的查询的时间戳?

【问题讨论】:

    标签: grails spring-batch


    【解决方案1】:

    好的,所以我使用this SO question 作为线索,并没有费心将参数传递给SqlPagingQueryProviderFactoryBean,而是在这里简单地使用了后期绑定。

    // within myReader, no need for parameters
    // parameterValues = [
    //        start: "#{jobParameters['start']}",
    //        until: "#{jobParameters['until']}"
    // ]
    
    
    // within sqlPagingQueryProviderFactoryBean
    whereClause = "some_timestamp >= '#{jobParameters[\'start\']}'::timestamptz AND some_timestamp < '#{jobParameters[\'until\']}'::timestamptz"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多