我希望能够计算在另一个查询中返回的记录数量。使用SQL很容易:HQL - 从select中选择计数
select count (*)
from (
select count(first_name)
from users
group by first_name) as temp
有没有人有任何想法我怎么能使用HQL做到这一点?
我希望能够计算在另一个查询中返回的记录数量。使用SQL很容易:HQL - 从select中选择计数
select count (*)
from (
select count(first_name)
from users
group by first_name) as temp
有没有人有任何想法我怎么能使用HQL做到这一点?
select count(*) from
(
select AUTO_ID_CUSTOMER, sum(UNIT_QTY*UNIT_PRICE)
from V_TRANSACTIONS
where INV_DATE > '01/01/2006'
group by AUTO_ID_CUSTOMER
having sum(UNIT_QTY*UNIT_PRICE) < 100000
)
我认为这是不可能的通用的方式。 HQL确实 - 据我所知 - 不支持from子句中的子查询。 (当然,尝试有有时隐藏的功能...)
在这种情况下,查询将是:
select count(distinct first_name)
from users
似乎不可能指望多个不同的列。
有一个feature for QueryOver
(我不知道它是否存在以及它将如何在Java中调用)。
如果你迫切需要它的HQL,你可以写这样的方法,并将其发送到社区...
但是,当我有多个不同的列时,问题就出现了...... – melmack 2012-03-21 09:43:47
我希望它能帮助别人。这是一个有效的HQL/SQL查询:
SELECT COUNT(*) FROM users AS u WHERE u.id IN
(SELECT u2.id FROM users AS u2 GROUP BY u2.first_name);
选择分组的行的ID,然后计算在该列表中与ID行。
UPD:此查询的性能很低。
除非我收到了你的问题错了,如果意图是才发现的查询返回的记录数,你可以试试下面的版本:
session.createQuery("select count(first_name) from Users
group by first_name)").list().size();
注意的是,用户在上面的查询是实体名称而不是表格名称。
在情况下,如果你正在寻找HQL查询语法类似于你的SQL查询(即,from子句的子查询中),它不是由Hibernate HQL支持按HHH-3356
这是一个很奇怪的答案上面的问题。 – 2012-03-20 14:26:24
给我更多关于HQL的描述? – 2012-03-20 14:35:07
@Mrugen http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html – lszk 2012-03-21 06:51:10