Can HQL可以選擇另一個查詢的結果集嗎?
例如:可以HQL選擇另一個查詢的結果集?
SELECT COUNT(*) FROM (SELECT * FROM Table)
我能做到這一點的SQL,但是當我試圖像上面的HQL,但它只是告訴我語法錯誤「意外的標記:(靠近1號線,列22 ......」
Can HQL可以選擇另一個查詢的結果集嗎?
例如:可以HQL選擇另一個查詢的結果集?
SELECT COUNT(*) FROM (SELECT * FROM Table)
我能做到這一點的SQL,但是當我試圖像上面的HQL,但它只是告訴我語法錯誤「意外的標記:(靠近1號線,列22 ......」
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
)
精確解是否有一個標準等同? –
簡短的回答:是的
下面這個鏈接是給你很多例子的文檔:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
但我不能用我上面提供的例子來做。 –
使用子查詢,你的願望是不可能的。一種方法是使用一個不同的是這樣的:
SELECT COUNT(DISTINCT t.id) FROM table t INNER JOIN t.list l
WHERE t.status = 'ST1' AND l.status = 'ST2'"
我使用的內連接來表達一個選擇重複
我有同樣的問題,請建議你使用 –