[英]jsf hibernate criteria api
我在Criteria 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記錄的列表(如果存在)。
我想按與XXX對象匹配的NUMBER OF YYY個記錄對結果進行排序。
到目前為止,我更接近偏執狂,而不是那個目標。 任何人?
為了解決您的問題,您需要獲取結果SQL Query(根據休眠標准生成),它看起來像這樣:
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
在這種情況下,可能需要使用休眠查詢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對於此類查詢更為靈活。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.