Привет, чего я пытаюсь достичь, я хочу отправить данные Pageable в запрос QueryDsl и получить результат как страницу, как я могу сделать это правильно? вот чем я занимаюсь до сих пор: вот мой контроллер: @ ...

1
Ke Vin 18 Дек 2020 в 13:35

1 ответ

Лучший ответ

Ваша проблема может быть связана с открытой проблемой QueryDSL. Задокументированная проблема связана с использованием fetchCount, но я думаю, что, скорее всего, это может быть также ваш случай.

Обратите внимание на следующий комментарий к упомянутой проблеме:

fetchCount() использует функцию COUNT, которая является агрегатной функцией. В вашем запросе уже есть агрегатные функции. Вы не можете агрегировать агрегатные функции, если не используется подзапрос (который недоступен в JPA). Следовательно, этот вариант использования не поддерживается.

Проблема также предоставляет временное решение.

По сути, идея состоит в том, чтобы выполнить COUNT, создав оператор поверх начального выбора. AFAIK это невозможно с QueryDsl, и именно поэтому в указанных обходных путях они обращаются к механизмам подчеркивания, предоставляемым Hibernate.

Возможно, еще одна вещь, которую вы можете попытаться избежать ограничения, - это создать представление базы данных для вашего запроса, соответствующие объекты QueryDsl над ним и использовать эти объекты для выполнения фактических вычислений. Я понимаю, что это не идеальное решение, но оно позволит обойти текущее ограничение QueryDsl.

1
jccampanero 23 Дек 2020 в 10:22