2014-03-19 42 views
0

在我的应用程序中,我只需要在200中获取20条记录。以前我从数据库获取所有记录,并且每当用户输入页码或单击导航选项卡用户时,最初只显示第一页中的前20条记录可能会得到另外20条记录。实现休眠分页

但是现在我只需要从数据库中只取得20条记录,并且还有总记录数,然后我只能根据记录总数显示页码。只要在相应的页码用户点击则只有相应的记录将需要被击中数据库

我是新来的休眠,这就是为什么我问这个问题

进账显示
+1

认为此答案适用于您的问题:http://stackoverflow.com/a/840108/355499 –

回答

3

分页可以用下面的实现接口的两种方法Query

query.setFirstResult(2); 
    query.setMaxResults(4); 

setFirstResult(INT startingRecordsFrom): 通过这种方法,我们可以设置结果查询是从记录开始的帮助。

setMaxResults(int maxRecords): 借助此方法,我们可以设置查询中的最大结果。

假设您有100条记录,并且您希望仅检索10条记录。你的代码应该是这样的

final int pageSize =10; 
    String hql = "FROM Employee"; 
    Query query = sess.createQuery(hql); 
    query.setFirstResult(updatedStartIndex); 
    query.setMaxResults(pageSize); 
    List<Employee> employees = query.list(); 
    updatedStartIndex = updatedStartIndex +pageSize; 

在这里,你必须从某个地方在程序的下一个页面请求维护您updatedStartIndex变量。

希望这是有益

0
getHibernateTemplate().execute(new HibernateCallback<List<YourObject>>() { 
    public List<YourObject> doInHibernate(Session session) throws HibernateException, SQLException { 
     return session.createCriteria(YourObject.class).setMaxResults(resultsPerPage).setFirstResult(offset).list(); 
    } 
}); 

你需要一个计数也能看到多少记录你有。将该数除以resultPerPage并获得页数。偏移量将是currentPage * resultPerPage - resultPerPage;