Я использую Spring Data JPA с QueryDSL и пытаюсь использовать функцию Sum в том месте, где условие. Поскольку я использую разбиение на страницы, поэтому мне нужно сначала вычислить счет. Так у меня есть Java-код, как показано ниже: -Spring Data JPA с QueryDSL, подсчет количества с агрегатной функцией
NumberPath<Double> path = entityPath.getNumber("qty", Double.class);
BooleanExpression exp = path.sum().loe(120);
JPQLQuery countQuery = from(stock).where(exp);
long count = countQuery.count();
его создания запроса, как это: -
select count(stock0_.stock_id) as col_0_0_ from stock stock0_
where sum(stock0_.qty)>=120;
и я получаю Error Code: 1111. Invalid use of group function
.
выше запрос не работает в SQL
, а потому, что функция суммы не может использоваться со счетом, в котором условие. Я не знаю, как бороться с такой проблемой, когда мне нужно сначала подсчитать счет, а затем получить реальные данные. Может кто-то, пожалуйста, помогите мне с тем, что такое подход к решению этой проблемы.
Просьба не предлагать @Query
аннотация, потому что я не могу ее использовать. Из-за необходимости динамической фильтрации.
no Я не использую функцию группы –
где sum (stock0_.qty)> = 120 - групповая функция. Это должно работать с сопоставлением have() или использовать JPASubquery. – crm86
Не могли бы вы объяснить мне подробно или предоставить любую ссылку. Как использовать это с pagable –