Querydsl – результат разделения на два или более объекта

У меня есть запрос, возвращающий список объектов (например, Employee ), и я хотел бы добавить итоговый, неуправляемый count(*) результатов вместе с ним. Что-то вроде:

 +---+-------------------+-------------+------------+ | | id | age | total | +---+-------------------+-------------+------------+ | 1 | 1234 | 24 |12 | | 2 | 154367 | 61 |12 | | 3 | 9485048386 | 36 |12 | +---+-------------------+-------------+------------+ 

Который я бы получил от эмуляции запроса, например:

 SELECT * , COUNT(*) OVER() AS total FROM employee LIMIT 3 OFFSET 0 

Как я могу запросить данные этого типа и получить List<Employee> и особый Long для total ? В настоящее время у меня это происходит, но я не знаю, как его расширить для нового total столбца / значения:

 projection = Projections.constructor(Employee.class, qEmployee.id, qEmployee.age); select(projection).from(qEmployee).where(foobar).offset(0).limit(3); 

Я смог достичь этого, добавив SQLExpression необходимый для функции окна, в select(...) . Запрос теперь возвращает List<Tuple> где первый элемент Tuple – это мой объект Employee , а второй – total :

 projection = Projections.constructor(Employee.class, qEmployee.id, qEmployee.age); List<Tuple> results = select(projection, SQLExpressions.count().over()).from(qEmployee).where(foobar).offset(0).limit(3);