我希望能夠計算在另一個查詢中返回的記錄數量。使用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