2012-06-28 4 views
1

안녕하세요 JOOQ 중첩 된 상태

select * from table 
where ((a = query or b = query or a = query) 
and (e = query or g = query or z = query)) 

jooq

에서 이런 일을 내가 jooq에 중첩 된 조건을 수행하는 방법을 알아낼 질수 작성하는 방법을 알아 내려고 노력하고있다. 도와주세요.

답변

4
당신은 API의 다음과 같은 부분을 이해해야합니다

: 그래서 어떤 Conditionand()/or() 방법 (및 기타)를 사용하여 다른 Conditions와 연결할 수 있습니다

public interface Condition { 
    Condition and(Condition other); 
    Condition or(Condition other); 
} 

합니다. 귀하의 경우에는, 당신은 다음과 같이 쉽게 조건을 형성 할 수있다 :

c1.or(c2).or(c3).and(d1.or(d2).or(d3)); 

를 또는 SQL 문에 넣어 :

Condition c1 = a.equal(query); 
Condition c2 = b.equal(query); 
Condition c3 = a.equal(query); 

Condition d1 = e.equal(query); 
Condition d2 = g.equal(query); 
Condition d3 = z.equal(query); 

지금 이러한 조건이 같은 연결할 수 있습니다

create.select() 
     .from(table) 
     .where(c1.or(c2).or(c3) 
     .and(d1.or(d2).or(d3))); 

물론 변수에 조건을 할당하지 않아도됩니다. 당신은 하나의 문에 모든 인라인 수 :

http://www.jooq.org/doc/3.0/manual/sql-building/conditional-expressions/

: 당신은 설명서에서 자세한 정보를 찾을 수 있습니다
create.select() 
     .from(table) 
     .where(a.equal(query).or(b.equal(query)).or(a.equal(query)) 
     .and(e.equal(query).or(g.equal(query)).or(z.equal(query))); 

관련 문제