我有一个查询返回了一个对象列表(比如说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);
答案 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);