Как разбить пользовательские запросы на страницы с помощью group by?

#java #spring-boot #spring-data-jpa

Вопрос:

У меня есть следующий запрос JPQL, сопоставляемый с пользовательской проекцией. Запрос работает правильно, пока я не установлю атрибут размера в объекте разбиения на страницы.

 @Query(value = "SELECT EXTRACT(WEEK FROM e.time) AS week "
          "COUNT(r.id) AS total FROM MyEntity e "
          "LEFT JOIN e.relationship r GROUP BY week")
Page<WeeklyReport> findWeeklyReport(Pageable pageable);
 

Переход в спящий режим завершается ошибкой java.sql.SQLSyntaxErrorException: Unknown column 'week' in 'group statement' после выполнения следующего запроса:

 select count(entity0_.id) as col_0_0_ from entity entity0_
left outer join relationship relationship1_ on entity0_.id=relationship1_.tide_id
group by week
 

Как я могу получить тот же запрос без имени моей группы, нарушив приведенную выше разбивку на страницы?

Ошибка не возникает, если размер не определен.

Комментарии:

1. baeldung.com/spring-data-jpa-pagination-sorting — работает ли «ГРУППА ПО 1»?

2. «ГРУППА ПО 1» заставляет мой запрос возвращать только 1 элемент независимо от фильтров.

3. вы запустили его непосредственно в mysql?

4. Моя ошибка, у меня там был еще один атрибут. Он все еще не работает, потому что он снова добавляет группы в этот запрос. Теперь это терпит неудачу с Can't group on 'col_0_0_' .