2017-02-20 62 views
1

雖然我試圖批量更新中的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問題並且看起來很醜。如果想知道爲什麼批處理更新的行爲與普通更新相比有所不同,那將會很好。

+0

你能看到工作在日誌中生成的SQL? (請注意,我也爲此打開了一個問題:https://github.com/jOOQ/jOOQ/issues/5910) –

回答

1

我想你遇到這個問題在這裏:#2738,這是固定的3.10,將被整合in 3.9.2

由於您使用與batch(Collection) API靜態聲明批次批量更新,綁定變量需要被內聯,不正確的Java API時間類型的jOOQ 3.9.1

+0

是的,這是我們面臨的問題,感謝您的反饋 - 對於延遲感到抱歉。 –