В чем ошибка преобразования SQL запроса в JPQL?

Имеется MySQL запрос:

SELECT user_id, SUM(price) sum_price FROM `order` GROUP BY user_id
HAVING sum_price = (
    SELECT SUM(price)
    FROM `order`
    GROUP BY user_id
    ORDER BY SUM(price) DESC LIMIT 1
    );

Пытаюсь преобразовать его в JPQL. Т.к. JPQL subquery не поддерживает ORDER BY, это заменено на max:

CriteriaQuery<UserPrice> cq = cb.createQuery(UserPrice.class);
Root<Order> root = cq.from(Order.class);

Subquery<BigDecimal> subQuery = cq.subquery(BigDecimal.class);
Expression<BigDecimal> subSum = cb.sum(root.get(ParameterName.PRICE));
Expression<BigDecimal> subMax = cb.max(subSum);
subQuery.select(subMax).groupBy(root.get(ParameterName.USER));

cq.multiselect(root.get(ParameterName.USER), root.get(ParameterName.PRICE))
                .groupBy(root.get(ParameterName.USER))
                .having(cb.equal(cb.sum(root.get(ParameterName.PRICE)), subQuery));

Но получаю ошибку:

Invalid use of group function
SQL Error: 1111, SQLState: HY000

Hibernate преобразовывает запрос в такой:

select o.user_id, o.price
from `order` o
         inner join user u on o.user_id = u.id
group by o.user_id
having sum(o.price) = (select max(sum(o2.price)) from `order` o2 group by o2.user_id)

Ошибка возникает в этом месте, но как этого избежать:

max(sum(o2.price))

Ответы (0 шт):