2012-05-11 17 views
7

でシンプル(E1およびE2)OR(E3およびE4)の式:QueryDSL

WHERE (E1 AND E2) OR (E3 AND E4) 

E1..E4は任意のブール式です。要するに、かっこ内でクエリを開始することです(E1とE2)。

答えて

6
where(e1.and(e2).or(e3.and(e4))) 
+0

これは、上記と同じ論理式ですが、同じではありません。括弧で始まるSQL文を生成したいのですが、論理的にはそれらがない式と論理的に同じですか? – csviri

+0

Querydslは、式が正しい方法でSQLにシリアル化されることを保証します。したがって、paranthesisについて心配する必要はありません。 –

+2

「私は心配する必要はありません。 e1.or(e2)と(e3))が '(e1 or e2)and e3)'または 'e1 or(e2 and e3)'を意味するかどうかはわかりません。私は実際に(e1.or(e2)とe3.or(e4)))が '(e1 or e2)と(e3 or e4)'を実際に欲しがっていたことに本当に驚いた。しかし、最初のORはどのようにして括弧内に入りましたか?何に基づいて? '...と(e3.or(e4))'は '...と(e3).or(e4)'との間に何らかの違いを生じますか?私たちは一般的にログでクエリを見直しますが、私はこのシリアライゼーションについてより具体的なものを見つけることが大好きです。 – virgo47