【发布时间】:2017-04-03 04:38:42
【问题描述】:
假设那是我的模型:
public class UserActions {
private int id;
private String username;
private String actionType;
// setter and getters here
}
现在我想执行下面的查询,并在表格中显示结果并带有分页:
select t.username, t.actionType
from UserActions t
group by t.username, t.actionType
这是查询结果:
现在,如果我执行此查询以获取总记录数:
select count(*)
from UserActions t
group by t.username, t.actionType
这应该是结果:
实际上,如果我想获得总记录数,应该像这样执行查询:
select count(*)
from (
select count(*)
from UserActions t
group by t.username, t.actionType)
但如您所知,上述查询无法执行,因为 hibernate 不支持 from 子句中的子查询。
更新
我很困惑 我发现了一个使用 group by 子句计算总计数的查询:
select sum(count(*) - count(*) + 1)
from UserActions a
group by a.username, a.actionType
它在 oracle 中可以正常工作,但在 postgres 和 MySql 中无法正常工作。
【问题讨论】:
-
带状态的休眠支持?
-
您的意思是
with子句吗? no 不支持。 -
如果你想得到一个总数,为什么不运行简单的
SELECT count(*) FROM UserActions t呢?我不明白你的问题。 -
因为我想用@krokodilko 分组计算总记录数
-
关于更新
I'm confused i found a query that calculates total count .... it works properly in oracle but doesn't work in postgres and MySql.- 这是因为Oracle 允许在分组查询中嵌套聚合函数,请参阅文档here 中的第一个示例以及此示例上方的说明。但这不是 ANSII-SQL 标准的特性,其他 DBMS 不允许这种嵌套。
标签: mysql oracle hibernate pagination group-by