获取在Hibernate中不起作用的特定数量的记录

时间:2012-11-06 13:12:25

标签: java hibernate

我有一张包含1000条记录的表。

我需要一次提取100条记录,所以我在hibernate Criteria中使用了setFetchSize,如下所示(Deal是实体对象)

 List<Deal> dealList= sess.createCriteria(Deal.class).setFetchSize(100).list();

但是,在我将dealList尺寸打印为

之后的上述查询之后
System.out.println("no. of deals "+dealList.size());

它提供了1000条记录而不是100条记录。

我错过了什么吗?

3 个答案:

答案 0 :(得分:3)

您需要setMaxResults()

获取大小是JDBC优化,而不是对执行的查询的限制。有关setFetchSize()setMaxSize()以及this thread的详细信息,请参阅this thread,了解这两者如何为您合作。

答案 1 :(得分:0)

setMaxResultssetFirstResult一起使用以获取下一条记录。

<强>更新

来自java.sql.Statement#setFetchSize javadoc:

  

给JDBC驱动程序一个关于应该的行数的提示         当需要更多行时从数据库中获取         由此ResultSet生成的Statement个对象。         如果指定的值为零,则忽略提示。         默认值为零。

答案 2 :(得分:0)

使用setMaxResults(100)限制提取的行数<100