【发布时间】:2014-03-04 05:05:32
【问题描述】:
我试图避免为计数创建一个单独的查询,为实际查询创建一个。我发现 SesssionImpl::createQuery 需要花费大量时间来处理复杂查询,通过结合计数和主查询,我可以消除一次 createQuery 调用。
在 SQL 中我可以做类似的事情
select count(*) over(), col_A, col_B
from TABLE_XX
where col_C > 1000
这可以在hibernate中实现吗?
(我试图避免使用原生 sql 并坚持 HQL 和分离标准。使用原生 SQL 违背了使用休眠的目的。我的系统必须同时支持 Oracle 和 Sybase)
【问题讨论】:
-
嗯,你总是可以使用本机 sql。我假设你想避免这种情况?
-
是的,我试图避免使用原生 sql 并坚持 HQL 和分离的标准。使用原生 SQL 违背了使用 hibernate 的目的。
-
你的底层数据库是什么?
-
我的系统必须同时支持 Oracle 和 Sybase
-
简单地使用本地 SQL 带或不带休眠。分析函数是标准的,大多数现代 RDBMS 实现都支持它们。实际上,使用纯 SQL 而不是“面向对象的查询”总是更好,因为它们在工具之间更具可移植性,易于测试,不会产生混淆,而且速度更快。
标签: java sql hibernate window-functions