2017-02-20 4 views
1

내가 Jooq 3.9.0와 오라클 11g 테이블의 필드를 업데이트 배치에 노력하고있어 나는 일 관련의 예외 얻고 있지만 : 우리는있어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); 

이 작품이 아닌 일괄 업데이트를하려고 노력했지만, 그것은 절대적으로 필요한 않는 한 나는 성능을 희생하지 않을 것입니다.

또한 to_timestamp(<Val>, “pattern”) 호출에서 날짜 필드를 감싸는 Jooq의 구성에서 바인딩을 추가하려고 시도했지만 그 역시 효과가 있었지만 취약한 것으로 보였고 이미 NLS 문제가 발생했으며보기가 흉하게 보입니다. 일괄 업데이트가 일반 업데이트와 다르게 작동하는 이유를 파악하는 것이 좋습니다.

+0

당신이 3.9.1을 볼 수 jOOQ 자바 시간 API 형식에 대해 제대로 작동하지 않는, 인라인해야 로그에서 생성 된 SQL은 무엇입니까? (참고로이 문제를 열었습니다. https://github.com/jOOQ/jOOQ/issues/5910) –

답변

1

나는이 문제와 관련하여 여기를 만났습니다 : #2738, 이는 3.10에 고정되어 있고 in 3.9.2으로 통합 될 것입니다.

정적 문 일괄 처리에 대한 batch(Collection) API와 함께 일괄 업데이트를 사용하고 있기 때문에, 바인드 변수

+0

예, 문제가 있습니다. 의견을 보내 주셔서 감사합니다. 지연에 대해 사과드립니다. –