2014-03-13 81 views
1

我有查詢的標準API,這是這樣的:JSF休眠標準API

CriteriaQuery<XXX> query = builder.get().createQuery(XXX.class).distinct(true); 
Root<XXX> root = query.from(XXX.class); 
Fetch<XXX, YYY> fetch = root.fetch(XXX_.yyy, JoinType.LEFT); 

現在我卡上的一部分:
當我得到的查詢結果,我的XXX記錄名單,附有YYY記錄的列表,當它們存在時。
我想將我的結果按NUMBER OF YYY記錄分類到XXX對象進行排序。

到目前爲止,我更接近偏執狂,然後到那個目標。任何人?

回答

1

爲了解決你所需要的結果SQL查詢(從休眠標準生成),看起來像這樣得到的問題:

SELECT xxx.*,count(yyy.FOREIGN_KEY_FIELD) as count FROM XXX xxx left join YYY yyy on (yyy.FOREIGN_KEY_FIELD=xxx.PRIMARY_KEY_FIELD) group by xxx.PRIMARY_KEY_FIELD order by count

可能是這種情況下,你需要使用Hibernate查詢API 。標準是爲實體創建的,並只返回實體列表和一些預測。在HQL它的外觀非常相似:

select xxx,count(yyy.FOREIGN_KEY_FIELD) as count from XXX xxx left join xxx.yyy yyy group by xxx.PRIMARY_KEY_FIELD order by count

HQL是這樣的查詢更加靈活。