2012-07-26 138 views
3

是否有可能編寫hql查詢,以通過一些子查詢命令? 有這樣的查詢:訂購休眠查詢與選擇

select a from A.a join a.b where a.b.id = :id 

我需要的是這樣的:

select a from A.a join a.b where a.b.id = :id order by (select count(c) from C c where c.a = a.id) desc 
+0

別名按我的知識排序完成在形成選擇的表格中的列上。如果錯了,請糾正我。 – 2012-07-26 12:08:52

+0

如果我使用本機查詢它的工作原理,但我找不到如何處理hql。所以,也許你是對的,只有當你有直接的關係時纔有可能(計數,平均等應該工作)。 – Dainius 2012-07-26 12:32:52

回答

3

我的鋸齒系統似乎並不奏效。或者,它可能是與Hibernate的錯誤,但這個事情的作品(雖然非常低效的),我有硬編碼

select a, (select count(c) from C c where c.a = a.id) as col_1_0_ 
from from A.a join a.b where a.b.id = :id 
order by col_1_0_ 

我使用Hibernate 3和MySQL

+0

您可能需要觀察爲此hql生成的hibernate sql以確定別名。 – 2012-07-26 12:36:42

+0

因爲我認爲沒有更好的方法來做我想問的東西,所以我接受了這個答案(即使我不認爲在生產中有這樣的好處,但這是另一個討論)。 – Dainius 2012-07-30 07:18:45

+0

別名問題已在Hibernate 3.6.0 RC2中修復https://hibernate.atlassian.net/browse/HHH-1902 – 2013-04-24 13:21:18