2

以下の方法が分からず困っています。

次のクラスがあるとします。

public class Post
{
   ...
   public IList<Comment> Comments
   ...    
}

public class Comment
{
    public DateTime CommentDate
    ... Some other properties but no reference to Post...
}

日付の降順で並べ替えられた特定の投稿の最初の 10 件のコメントのみを取得するクエリを作成するにはどうすればよいですか?

Commentからへの参照がないため、 に対してクエリを実行Postできません。CommentPostPost

(実際には私のドメインモデルではないところで)Postから参照するプロパティを追加できないため、行き詰まっています。Comment

明らかな何かを見逃していないことを願っています。

編集:

コメントから投稿への参照があった場合、これは私が望むものを与えるでしょう

var query = (from comment in Session.Query<Comment>() orderby comment.CommentDate 
where comment.Post == some Post select comment).Take(10);

ないので、10 個のコメントのリストを返す Post で同等のクエリを探しています。

Linq を介してクエリが可能であれば、それが望ましいですが、QueryOver を使用しても十分満足です。

その参照があるように、代わりにドメイン モデルを作り直すことになるかもしれません。

4

1 に答える 1

0

HQLを使用したソリューションは次のとおりです。

var postId = 1;
var hql = "select p.Comments from Post p join p.Comments c where p.PostId = :postId order by c.CommentDate desc";
var result = session.CreateQuery(hql)
    .SetParameter("postId", postId)
    .SetMaxResults(10)
    .List<Comment>();

Criteria API でそれを行う方法がわかりませんでした。

于 2011-08-16T00:08:55.183 に答える