如何在具有JPA条件的子查询中使用LIMIT?

问题描述 投票:3回答:1

我想在其中进行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语句时,有人可以帮忙吗?谢谢!

jpa subquery limit criteria
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.