2011-05-18 61 views
0

在論壇中,我想列出每個主題的最新帖子。 在SQL中,我可以通過使用Max(Post.Date)的主題組進行子查詢,然後使用Posts表進行內部聯接以從每個主題獲取最新的Post記錄。 如何在ICriteria中重現此操作?使用ICriteria(Nhibernate)從主題獲取最新帖子

細節:Topic類沒有Posts屬性。

目標SQL: SELECT *後從 帖子,(SELECT IdTopic,MAX(DATE)AS日期從帖子GROUP BY IdTopic)AS MaxDates WHERE MaxDates.IdTopic = Posts.IdTopic AND MaxDates.Date =帖子。日期

韓國社交協會[]

帕特里克Coelho的

+0

你可以更新你要找的SQL您的文章讓ICriteria爲您生成?另外,如果您提供您的模式或者至少它的相關部分,這將會很有幫助。 – csano 2011-05-18 15:58:47

+0

@cs用目標SQL查詢更新。 – 2011-05-18 18:35:54

回答

0

通過使用個createCriteria。這很好地解釋了Ayende Rahien

編輯改變,以解決OP的評論

我站不住腳這裏,但是這可能讓你開始:

DetatchedCriteria posts = DetachedCriteria.For<Post>("p") 
    .SetProjection(Projections.Property("p.IdPost"));   
    .Add(Restrictions.EqProperty("t.IdPost", "p.IdPost")); 

DetachedCriteria postMax = DetachedCriteria.For<Post>, "p2") 
    .SetProjection(Projections.Max("Date")); 

var topics Session.CreateCriteria<Topic>("t") 
    .Add(Subqueries.Select(postMax)) 
    .Add(Subqueries.Exists(posts)).List<Topic>(); 
+0

好的解決方案,但不幸的是,Topic類沒有Posts屬性。 – 2011-05-18 14:59:59

+0

@Patrick他們有什麼關係? – 2011-05-18 15:06:33

+0

@Steve Post類有一個Topic屬性。 – 2011-05-18 15:10:22

相關問題