У меня есть класс спецификации, который реализует интерфейс спецификации JPA: EntityClassSpecification implements Specification<EntityClass>
У меня есть переопределенный toPredicate
метод, который выглядит следующим образом:
public Predicate toPredicate(Root<EntityClass> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
final Collection<Predicate> predicates = new ArrayList<>();
if (isNullOrEmpty(soilEntryCriteria.getField())) {
query.groupBy(root.get("field"));
}
return cb.and(predicates.toArray(new Predicate[predicates.size()]));
}
Проблема в том, что когда я 'используя эту спецификацию для findAll (), которая возвращает Page<EntityClass>
результирующий набор, сгруппированный по field
, но когда я получаю общее количество для разбивки на страницы - он возвращает неверный счет без группировки по field
.
Я попытался использовать .distinct(true)
, .countDistinct(root.get("field"))
и создать отдельный запрос подсчета, который возвращает длинное значение, но каждый раз, когда запрос jpql для подсчета не изменяется и возвращает неверное общее значение.
Я думаю, его времяпросить помощи.Не могли бы вы предложить какие-либо советы, как я могу изменить этот запрос общего количества для нумерации страниц?