使用springs getHibernateTemplate,如何获取用户列表并限制结果集?


问题内容

我有一个Spring MVC应用程序,如何返回用户列表并限制结果?

我的UserDao看起来像:

public List<User> getUsers(int limit) {
  return super.getHibernateTemplate()????
}

问题答案:

我假设您这样做是出于分页的目的。

您可以创建查询并使用setMaxResults和setFirstResult:

public List<User> getUsers(int limit)
{
    Query q = getHibernateTemplate().getSession().createQuery("from User");
    q.setFirstResult(0); // modify this to adjust paging
    q.setMaxResults(limit);
    return (List<User>) q.list();
}

或者,使用HibernateCallback(这可能是最好的方法,尽管比较麻烦):

    return getHibernateTemplate().executeFind(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
            Query q = session.createQuery("from User");
            q.setMaxResults(limit);
            return q.list();
        }
    });

另外,它将为您处理异常翻译。