В то время как я пытаюсь партии обновить поле в таблице 11g Oracle с Jooq 3.9.0, и я получаю, связанные с даты исключения:JOOQ даты пакетного обновления с Oracle 11g
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) –