2014-04-14 3 views
1

시리얼 (자동 증가) uri_id 열 및 uri 열이있는 PostgreSQL uris 테이블이 있습니다. 자바 Integer을 반환jOOQ 및 PostgreSQL 직렬 및 반환 값을 반환

createDSLContext().select(fieldByName("uri_id")).from(tableByName("uris")) 
    .where(fieldByName("uri").equal(uri.toString())).fetchOne(0, Integer.class)) 

: 나는 jOOQ을 사용하여 테이블의 벌금을 조회 할 수 있습니다. 나는 새로운 URI를 삽입 할 때, 나는 생성 된 uri_id 키를 다시 얻으려면, 그래서 나는이 시도 :

createDSLContext().insertInto(tableByName("uris"), fieldByName("uri")) 
    .values(uri.toString()).returning(fieldByName("uri_id")).fetchOne().getValue(0, Integer.class) 

내가 오류 얻을이 시간 : 그냥 테스트로

Exception in thread "main" java.lang.IllegalArgumentException: Field 0 is not contained in list 

을, I INSERT 문에 uri_id에 대한 리터럴 값을 제공하려고 시도했지만 여전히 오류가 발생했습니다. 그것은 올바른 SQL과 같은

를 생성하는 중입니다

insert into "uris" ("uri") values ('http://example.com/') returning "uri_id" 

그러나 반환 된 레코드가 비어 있습니다. insert 문에 리터럴 uri_id을 지정할 때도 마찬가지입니다.

jOOQ를 사용하여 PostgreSQL INSERT 문에서 자동 생성 된 열을 검색하는 방법은 무엇입니까?

답변

1

이 질문에 대한 답변은 jOOQ user group에 있습니다.

기본적으로 RETURNING 절은 생성 된 테이블 대신 일반 SQL과 함께 사용할 때 jOOQ 3.3 (및 그 이하 버전)에서 현재 지원되지 않는 알려진 문제로 실행되고 있습니다. 다음은 문제 참조입니다.

https://github.com/jOOQ/jOOQ/issues/2374