2017-06-21 14 views
0

私の仕事でqueryDSLを使い始めました。これまでのところ、構文は非常に直感的だと思います。QueryDSL 4 select + where + exists

非常に単純なSQLクエリをqueryDSLに変換する必要がありますが、EXISTS句とは何をするのか分かりません。

SELECT * FROM XRDocument document 
WHERE status = 0 
    AND EXISTS 
    (
     select * FROM XEntity X WHERE X.pid in (11,22,33) 
    ) 
    AND NOT EXISTS 
    (
     select * FROM XEntity X WHERE X.pid in (44,55,66) 
    ) 

私はすべてのQクラスを用意しています。

JPAQuery query = new JPAQuery(em); 
query.from(xDocument).where(xDocument.status.eq(0)) 

私はドキュメントを読んでますがありません「.exists()」メソッドがあります: は、これまでのところ、これは私が(擬似コード)を持っているすべてです。私もJDOExpressionsクラスを使用しようとしましたが、解決策を考え出すことができませんでした。 誰かが私を正しい方向に向けることができますか?

ありがとうございました!

答えて

0

私はBooleanExpressionクラスを使って私の問題を解決したと言いたいと思っていました。

BooleanExpression exists = JDOExpressions.selectFrom(xEntity).where(xEntity.pid.in(11,22,33)).exists(); 

これ以降の式は、BooleanBuilder内で使用できます。

関連する問題