如何通过NHibernate实体获取页码?

时间:2009-10-16 08:53:50

标签: .net nhibernate pagination

我有一个使用NHibernate的分页:

public IEnumerable<Answer> GetAnswers(int page, int pageSize)
    {
        return HibernateTemplate.Execute(
           session =>
           {
               var criteria = session.CreateCriteria(typeof(Answer));
               return criteria
                   .SetFirstResult((page - 1) * pageSize)
                   .SetMaxResults(pageSize).List<Answer>();
           }
           );
    }

现在我的任务是确定在哪个页面上放置具体的Answer对象。我该怎么做? nhibernate是否提供了一些信息,比如结果集中的行索引?

1 个答案:

答案 0 :(得分:1)

NHibernate HQL为此提供了索引功能。

public int GetRowIndex(Answer answer)
{
    return HibernateTemplate.Execute(
       session =>
       {
           return session.CreateQuery(
                "select index(a) from Answer a").UniqueResult<int>();
       });
}

我没有测试过代码,但您可以从NHibernate doc在线获取更多信息(过期版本):https://www.hibernate.org/hib_docs/nhibernate/1.2/reference/en/html_single/#queryhql-expressions