@n199a
Java

Как составить запрос с помощью JPQL?

Имеется SQL запрос:
SELECT user_id, sum_price FROM (
    SELECT user_id, sum_price, RANK() OVER (order by sum_price DESC) AS r
    FROM (SELECT user_id, SUM(price) sum_price FROM `order` GROUP BY user_id) t
) AS t2
WHERE r = 1;


Пробую составить данный запрос с помощью JPQL, но не выходит:
CriteriaQuery<UserPrice> cq = cb.createQuery(UserPrice.class);
        Root<Order> from = cq.from(Order.class);

        Subquery<Order> sQuery = cq.subquery(Order.class);

        Root<Order> sFrom = sQuery.from(Order.class);
        Path<User> sUser = sFrom.get(ParameterName.USER);
        Path<BigDecimal> sPrice = sFrom.get(ParameterName.PRICE);

        Expression<BigDecimal> sSum = cb.sum(sPrice);
        Predicate restriction = cb.equal(sQuery, NumberUtils.INTEGER_ONE);

        cq.multiselect(sUser, sSum)
                .orderBy(cb.desc(sSum))
                .groupBy(sUser)
                .where(restriction);


Как составить данный запрос с помощью JPQL?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы