【问题标题】:QueryDSL - add subquery into FROM statementQueryDSL - 在 FROM 语句中添加子查询
【发布时间】:2013-02-22 08:45:19
【问题描述】:

我需要像这样实现 sql 查询:

SELECT * FROM (SELECT a FROM b WHERE a.z = 1) WHERE rownum <=1;

如何使用 QueryDSL 编写这样的语句(我没有使用 JPA 和 JDO - 只使用干净的 sql)?

【问题讨论】:

    标签: spring-data querydsl


    【解决方案1】:

    Querydsl SQL模拟所有支持数据库的分页,所以你可以直接写

    query.from(a)
        .where(a.z.eq(1))
        .limit(1)
        .list(a);
    

    如果你需要通过子查询来写,那么像这样

    query.from(
      new SQLSubQuery().from(a).where(a.z.eq(1)).list(a).as(a))
     .where(rownum.loe(1))
     .list(a);
    

    【讨论】:

    • 只有我,但我无法使用子查询解决方案,因为 .from() 方法需要一个 EntityPath> 数组。 as() 方法返回 Expression 的子类型。
    • @gouki 你用的是哪个 Querydsl 版本?
    • 嗨蒂莫,它的版本是 3.4.2
    • 有足够多的表单方法适合您的情况querydsl.com/static/querydsl/3.4.2/apidocs/com/mysema/query/sql/…
    猜你喜欢
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-10-23
    • 1970-01-01
    • 2021-11-01
    • 2013-07-30
    • 2019-10-01
    相关资源
    最近更新 更多