虽然我试图批量更新中的Oracle 11g表中的字段与Jooq 3.9.0,和我越来越日期相关的异常:JOOQ批量更新日期
org.jooq.exception.DataAccessException: SQL [null]; error occurred during batching: ORA-01843: not a valid month
我们使用Java 8时间类型(javaTimeTypes = true
)。伪代码:
List<Query> updates = singletonList(
jooq.update(TABLE).set(TABLE.FIELD, LocalDateTime.now()));
jooq.batch(updates).execute();
该字段在表中有TIMESTAMP(3)类型。 到目前为止,我已经尝试做非批量更新,例如:
updates.forEach(Query::execute);
这个工作,但除非绝对必要,我不会牺牲性能。
还试图在Jooq的配置文件中添加一个类型绑定,它在to_timestamp(<Val>, “pattern”)
调用中包装了日期字段,这也起作用,但它似乎很脆弱,已经引发了NLS问题并且看起来很丑。如果想知道为什么批处理更新的行为与普通更新相比有所不同,那将会很好。
你能看到工作在日志中生成的SQL? (请注意,我也为此打开了一个问题:https://github.com/jOOQ/jOOQ/issues/5910) –