NHibernate查询以获取给定列表属性的前(x)个实体

NHibernate查询以获取给定列表属性的前(x)个实体,nhibernate,nhibernate-criteria,Nhibernate,Nhibernate Criteria,我很难想出如何做下面的事情 鉴于以下类别: public class Post { ... public IList<Comment> Comments ... } public class Comment { public DateTime CommentDate ... Some other properties but no reference to Post... } 但是没有,所以我在寻找返回10条评论列表的Post上的等效查询

我很难想出如何做下面的事情

鉴于以下类别:

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

public class Comment
{
    public DateTime CommentDate
    ... Some other properties but no reference to Post...
}
但是没有,所以我在寻找返回10条评论列表的Post上的等效查询

如果可以通过Linq进行查询,这正是我所希望的,但是如果使用QueryOver,我会非常高兴


我可能只是修改了我的域模型,这样就有了这个参考。

这里有一个使用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>();
var postId=1;
var hql=“从Post p join p.Comments c选择p.Comments,其中p.PostId=:按c.CommentDate desc发布顺序”;
var result=session.CreateQuery(hql)
.SetParameter(“postId”,postId)
.SetMaxResults(10)
.List();

我无法在Criteria API中找到一种方法来实现这一点。

这里有一个使用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>();
var postId=1;
var hql=“从Post p join p.Comments c选择p.Comments,其中p.PostId=:按c.CommentDate desc发布顺序”;
var result=session.CreateQuery(hql)
.SetParameter(“postId”,postId)
.SetMaxResults(10)
.List();

我无法在Criteria API中找到解决方法。

发布您正在努力解决的代码,以便我们更好地了解如何回答问题(例如,我们是否为您提供HQL、Criteria、QueryOver等)。发布您正在努力解决的代码,以便我们更好地了解如何回答问题(例如,我们是否向您提供HQL、条件、查询版本等)。谢谢,这确实有效。最后,我更改了域模型以使查询更容易。谢谢,这确实有效。最后,我更改了域模型以使查询更容易。