exists - QueryDSL 4 select + where + 存在

标签 exists querydsl

刚开始在我的工作中使用 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)
     )

我已经准备好了所有的 Q 课。
到目前为止,这就是我所拥有的(伪代码):
JPAQuery query = new JPAQuery(em);
query.from(xDocument).where(xDocument.status.eq(0))

我阅读了文档,但没有“.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()));

关于exists - QueryDSL 4 select + where + 存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687877/

相关文章:

mysql - 如何检查mysql数据库是否存在

exists - 在 Coq : inversion of existential quantifier with multiple variables, 中使用一个命令?

flash - Actionscript3 : Does variable exist?

java - QueryDSL:从实体构建查询

java - Querydsl 更新子句填充跳过 bean 空值属性

jquery - jQuery 中如何检查变量是否存在?

java - Spring Data JPA QueryDslPredicateExecutor 找到不同的结果

elasticsearch - 如何在Kibana中搜索带有特殊字符的单词-Elasticsearch

java - Querydsl JPQLQuery fetchAll 目的

sql - 检查行是否已经存在,如果存在则告诉引用的表 id