QueryDSL количество агрегированных (сгруппированных) строк - PullRequest
0 голосов
/ 20 марта 2020

У меня есть querydsl для извлечения данных с группировкой и суммой, что-то вроде этого

var query = queryFactory
                .select(Projections.constructor(DistributionData.class, entity.date, entity.type,
                        entity.whiteCase.sum(), entity.blackCase().sum()))
                .from(entity).where(where).groupBy(entity.date, entity.type);
var listDataSum = query.limit(size).offset(page).orderBy(entity.date.asc(), entity.type.asc()).fetch();

Это будет производить запрос вроде:

  select date, type, sum(white_case), sum(black_case)
    from table
group by date, type

Но теперь мне нужно обработать нумерация страниц, чтобы получить общее количество агрегированных строк, возвращаемых querydsl. В нативном SQL означает создание некоторого запроса, например

select count(*) from 
(
   // generated query above
)

Как я могу создать этот запрос подсчета? Использование query.fetchCount() не сработало, потому что это сгенерирует этот запрос:

select count(distinct distributionData.date, distributionData.type) ....

, поэтому fetchCount() не упаковывает запрос, а вместо этого обернет поля count.

Спасибо

...