如何在JPA Criteria的子查询中使用LIMIT?

时间:2014-07-14 17:44:28

标签: jpa subquery limit criteria

我想在其中进行查询有一个su查询,然后这将进行查询。

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语句可以帮助任何人吗?谢谢!

1 个答案:

答案 0 :(得分:0)

在您的选择语句中添加criteriaBuilder.min(rootB.<Number>get(Orders_.id_orders))。这应该起作用。