2011-05-18 13 views
0

フォーラムでは、各トピックから最新の投稿をリストしたいと思います。 SQLでは、TopicがMax(Post.Date)を取ってグループとサブクエリを行い、Postsテーブルを使って内部結合を行い、各トピックから最新のPostレコードを取得できます。 ICriteriaでこれをどのように再現できますか?ICriteria(Nhibernate)を使用してトピックから最新の投稿を取得

詳細:トピッククラスはNO Postsプロパティを持っています。

TARGETのSQL:。 SELECTポストの記事* FROM 、(投稿GROUP BY IdTopicから日付AS IdTopic、MAX(DATE)を選択)MaxDates MaxDates.IdTopic = Posts.IdTopic AND MaxDates.Date =投稿AS。日

TKS []

パトリック・コエーリョのcreateCriteriaを使用することにより

+0

あなたが探しているSQLを使用して記事を更新することができますあなたのためにICriteriaを生成するには?また、スキーマを提供する場合や、スキーマの関連部分を提供する場合にも役立ちます。 – csano

+0

@csターゲットSQLクエリで更新されます。 –

答えて

0

。これは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プロパティがありません。 –

+0

@Patrickどのように関連していますか? –

+0

@Steve PostクラスにはTopicプ​​ロパティがあります。 –

関連する問題