2017-01-29 3 views
1

jooq 3.9.1을 사용하고 있습니다. PostgreSQL 연산자와 함수를 기반으로 조건을 추가하여 쿼리를 작성하고 싶습니다.jOOQ PostgreSQL 함수 및 연산자를 실행하는 방법

예를 들어 배열의 경우 연산자를 많이 사용합니다 (예 : &&). array_prepend과 같은 함수를 사용하고 싶습니다.

이것을 달성하는 가장 좋은 방법은 무엇입니까?

내가 jOOQ 3.9에서

int[] array_of_values = {1,2,3}; 

selectOne() 
    .from(TABLE) 
    .where(TABLE.COL_A.eq("Hello")) 
    .and(TABLE.COL_B.operator("&&").of(array_of_values)) 
    .fetch(); 

답변

2

같은 무언가가 있어야한다고 생각, 여기에 앞으로 이동하는 표준 방법은 use the plain SQL API

selectOne() 
    .from(TABLE) 
    .where(TABLE.COL_A.eq("Hello")) 
    .and("{0} && {1}", TABLE.COL_B, val(array_of_values)) 
    .fetch(); 

이 편의를 위해 SelectConditionStep.and(String, QueryPart...) 방법을 사용되지만이다가 사용을 포함하여 다른 방법이 있습니다 DSL.condition()

귀하의 아이디어는 아주 좋은 것입니다. feature request for jOOQ 3.10을 등록했습니다.

+0

답변 해 주셔서 감사합니다. 각 방언마다 호출 할 연산자가있는 열거 형을 사용하는 것이 좋을 것이므로 연산자 메서드에 'String'을 전달하지 않아도되지만 너무 많은 수사가 가능하다는 것을 알고 있습니다. –

+1

@mat_boy : 걱정하지 마라. (결국) 이것을 추상화하기위한 org.jooq.Operator 타입이있을 것이다. 대부분의 데이터베이스에서 사용자가 고유 한 연산자를 정의 할 수 있으므로 열거 형에 대해 확실하지 않으므로 연산자 코드 생성이 수행됩니다. Oracle 용 : https://github.com/jOOQ/jOOQ/issues/3710 –