Spring批处理在数据库中存储纪元时间

时间:2017-12-15 19:15:44

标签: spring-batch

当我运行我的spring批处理作业时,它将其作业参数详细信息存储在DB中的 BATCH_JOB_EXECUTION_PARAMS 表中,但我在 DATE_VAL 列中看到了一个奇怪的事情。 > BATCH_JOB_EXECUTION_PARAMS 表。 Spring批量插入所有作业参数的纪元时间。

我查看了java反编译器中的类文件,然后找到了

if (type == JobParameter.ParameterType.STRING) {
  args = new Object[] { executionId, key, type, value, new Timestamp(0L), Long.valueOf(0L), Double.valueOf(0.0D), identifyingFlag };
}

在上面的代码中,他们使用" 新时间戳(0L)"创建作业参数的对象。即,纪元时间。

INSERT into %PREFIX%JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, KEY_NAME, TYPE_CD, STRING_VAL, DATE_VAL, LONG_VAL, DOUBLE_VAL, IDENTIFYING) values (?, ?, ?, ?, ?, ?, ?, ?)"), args, argTypes)

上面的insert语句接受这个args对象并将作业参数插入到DB中。我认为这导致了将纪元时间插入数据库的问题。

1 个答案:

答案 0 :(得分:0)

只有在参数类型为String时才会显示您显示的代码行。如果是实际日期,则会适当设置。