【问题标题】:How to use LIMIT in sub-query with JPA Criteria?如何在 JPA Criteria 的子查询中使用 LIMIT?
【发布时间】:2014-09-04 17:22:32
【问题描述】:

我想在其中进行查询,其中有一个 su-query,那么这将进行查询。

SELECT * FROM orders orda WHERE orda.id_orders IN
(SELECT ordb.id_orders FROM orders ordb WHERE orda.identifier = ordb.identifier LIMIT 1)

目前我的结构与其他参数如下:

return new Specification<Orders>() {
            @Override
            public Predicate toPredicate(Root<Orders> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
                Subquery<Orders> ordersSubquery = criteriaQuery.subquery(Orders.class);
                Root rootB = ordersSubquery.from(Orders.class);
                ordersSubquery.select(rootB.get(Orders_.id_orders));
                ordersSubquery.where(cb.equal(root.get(Orders_.identifier), rootB.get(Orders_.identifier)));
                criteriaQuery.orderBy(cb.asc(root.get(Orders_.created_at)));
                criteriaQuery.groupBy(root.get(Orders_.created_at));
                Predicate temp = cb.and(
                        root.get(Orders_.id_orders).in(ordersSubquery)
                );
                return temp;
            }
        };

当我在子查询中包含 LIMIT 语句时,谁能提供帮助?谢谢!

【问题讨论】:

    标签: jpa subquery limit criteria


    【解决方案1】:

    在您的选择语句中添加criteriaBuilder.min(rootB.&lt;Number&gt;get(Orders_.id_orders))。这应该可以。

    【讨论】:

      猜你喜欢
      • 2015-08-05
      • 2012-01-23
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2012-07-19
      • 2012-12-19
      相关资源
      最近更新 更多