2011-11-17 47 views
1

如果我没有设置setFirstResult(-)并递归调用criteria.setmaxresults(10)每一次,它会自动从数据库中抓取下10个项目吗?休眠setMaxResults分页

+0

所以确认需要使用setFirstResult (偏移量)做分页? – cometta

+0

是的,确认:-) –

回答

4

号必须使用criteria.setFirstResult(0)和页面通过自己,这样的事情:

public List getCarters(final int firstResult, final int maxResults) { 

    final Criteria criteria = sessionFactory.getCurrentSession() 
         .createCriteria(SomePersistentClass.class); 
         .add(Restrictions.eq("name", "Carter")) 
    criteria.setFirstResult(firstResult); 
    criteria.setMaxResults(maxResults); 

    return criteria.list(); 
} 
+0

+1为Michael Caine参考。 –

+0

有没有办法使用Long来获得最大结果? – chefarov

2

当然,没有。标准从数据库中抓取数据,只有当你调用.LIST()或.uniqueResult()

+0

是的,当然返回.list()..所以如果我用setmaxresult(10)调用相同的方法,它不会自动抓住接下来的10个项目?必须使用setfirstresult(offset)? – cometta

+0

如果你想要下10个项目,你应该使用setFirstResult(offset)和setMaxResults(10)。 –