随笔-57  评论-202  文章-17  trackbacks-0
      数据分页显示,是很多B/S系统会遇到的问题。现在大多数主流数据库都提供了数据部分读取机制,而对于某些没有提供相应机制的数据而言,Hibernate也通过其它途径实现了分页,如通过Scrollable ResultSet,如果JDBC不支持Scrollable ResultSet,Hibernate也会自动通过ResultSet的next方法进行记录定位。Hibernate的Criteria、Query等接口提供了一致的方法设定分页范围。下面是书中的例子:

Criteria criteria = session.createCriteria(TUser.class);
Criteria.add(Expression.eq(
"age""20"));
//从检索结果中获取第100条记录开始的20条记录
criteria.setFirstResult(100);
criteria.setFetchSize(
20);

      不过,我在测试的时候总是不能够正常工作,把setFetchSize方法换成setMaxResults方法才行。换成最新的mysql-connector-java-3.1.10-bin-g.jar驱动也是一样。
posted on 2005-07-26 18:12 小米 阅读(5533) 评论(4)  编辑  收藏 所属分类: Hibernate

评论:
# re: 《深入浅出Hibernate》读书笔记(8)——Hibernate分页 2005-08-24 10:00 | Bug.o0
order by  回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(8)——Hibernate分页 2005-12-01 19:03 | DreamTiger
我也碰到这个问题。用setFetchSize没有作用。但是如果换成setMaxResults后,读出来的就不对了,是从第一个开始,而不是从指定的开始。  回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(8)——Hibernate分页 2005-12-01 19:10 | DreamTiger
是我弄错了,用setMaxResults可以的。  回复  更多评论
  
# re: 《深入浅出Hibernate》读书笔记(8)——Hibernate分页 2009-05-26 16:20 | qianmz
criteria是不是
criteria.setFirstResult(start);
criteria.setFetchSize(end);
对任何数据库都可以这样设置查询规定的条数(比如mysql中).
我记得在oracle中是
criteria.setFirstResult(start);
criteria.setMaxResult(end);  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: