我刚开始在工作中使用 queryDSL。到目前为止,我认为语法非常直观。
我需要将一个非常简单的 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)
)
Run Code Online (Sandbox Code Playgroud)
我所有的 Q 课程都准备好了。到目前为止,这就是我所拥有的一切(伪代码):
JPAQuery query = new JPAQuery(em);
query.from(xDocument).where(xDocument.status.eq(0))
Run Code Online (Sandbox Code Playgroud)
我阅读了文档,但没有“ .exists()”方法。我也尝试过使用该类JDOExpressions,但我无法想出解决方案。
有人能指出我正确的方向吗?
你可以做类似的事情
JPAQuery query = new JPAQuery(em)
.select(xDocument)
.from(xDocument)
.where(xDocument.status.eq(0)
.and(JPAExpressions.selectOne()
.from(xEntity)
.where(xEntity.pid.in(11,22,33)
.exists())
.and(JPAExpressions.selectOne()
.from(xEntity)
.where(xEntity.pid.in(44,55,66)
.notExists()));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14928 次 |
| 最近记录: |