2013-04-03 59 views
15

Can HQL可以選擇另一個查詢的結果集嗎?
例如:可以HQL選擇另一個查詢的結果集?

SELECT COUNT(*) FROM (SELECT * FROM Table) 


我能做到這一點的SQL,但是當我試圖像上面的HQL,但它只是告訴我語法錯誤「意外的標記:(靠近1號線,列22 ......」

+0

我有同樣的問題,請建議你使用 –

回答

11

HQL不支持subqueries,但他們只能發生在select或where子句您提供的例子就是最好地寫在HQL直聲明例如:。

select count(*) from table t (where table is the entity name) 

如果查詢涉及比(select * from Table)更復雜的語句,我建議將此邏輯放入視圖中,然後根據此視圖創建實體。

對於支持子查詢的數據庫,Hibernate支持查詢中的子查詢 。子查詢必須被圓括號包圍(通常由SQL集合函數調用 )。即使相關的子查詢 (引用外部查詢中的別名的子查詢)也是允許的。

from DomesticCat as cat 
where cat.name not in (
    select name.nickName from Name as name 
) 
+0

精確解是否有一個標準等同? –

0

使用子查詢,你的願望是不可能的。一種方法是使用一個不同的是這樣的:

SELECT COUNT(DISTINCT t.id) FROM table t INNER JOIN t.list l 
    WHERE t.status = 'ST1' AND l.status = 'ST2'" 

我使用的內連接來表達一個選擇重複

相關問題