Querydsl - 将结果分成两个或多个对象

时间:2017-09-12 13:40:59

标签: java sql orm kotlin 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);

1 个答案:

答案 0 :(得分:0)

我能够通过向SQLExpression添加窗口函数所需的select(...)来实现此目的。查询现在返回List<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);