這個HQL語句,當執行這將產生以下結果:如何將此HQL轉換爲DetachedCriteria?
select t, count(s) from Submission s right join s.Topics as t GROUP BY t.Id
result[0]
[0] topic_id, topic_name, ...
[1] 10
result[1]
[0] topic_id, topic_name, ...
[1] 12
.
result[n]
[0] topic_id, topic_name, ...
[1] 19
將這個DetachedCriteria API產生幾乎相同的結果,但沒有加載主題
ProjectionList PrjList = Projections.ProjectionList();
PrjList.Add(Projections.GroupProperty("Topics"), "t");
PrjList.Add(Projections.Count("Id"));
DetachedCriteria Filter = DetachedCriteria.For<Submission>();
Filter.CreateCriteria("Topics", "t", JoinType.RightOuterJoin);
Filter.SetProjection(PrjList);
result[0]
[0] null
[1] 10
result[1]
[0] null
[1] 12
.
result[n]
[0] null
[1] 19
出於某種原因,NHibernate的拒絕創建主題對象爲結果集,但它爲HQL查詢。這是爲什麼?
您試圖GroupProperty類,但不是屬性。我擔心你應該把你在主題中的每個屬性分組到ProjectionList中。在這種情況下,我會做一個方法擴展,將調用類的每個屬性添加到分組。 – Genius 2011-02-13 13:25:25
NHibernate,使用HQL查詢,能夠做我在這裏嘗試的。我只是想找出使用Criteria API做同樣事情的方法。然而,你提出的建議將需要我希望避免的轉變。 – Roman 2011-02-13 13:40:52