我有一张包含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条记录。
我错过了什么吗?
答案 0 :(得分:3)
您需要setMaxResults()。
获取大小是JDBC优化,而不是对执行的查询的限制。有关setFetchSize()
和setMaxSize()
以及this thread的详细信息,请参阅this thread,了解这两者如何为您合作。
答案 1 :(得分:0)
将setMaxResults
与setFirstResult
一起使用以获取下一条记录。
<强>更新强>
来自java.sql.Statement#setFetchSize
javadoc:
给JDBC驱动程序一个关于应该的行数的提示 当需要更多行时从数据库中获取 由此
ResultSet
生成的Statement
个对象。 如果指定的值为零,则忽略提示。 默认值为零。
答案 2 :(得分:0)
使用setMaxResults(100)
限制提取的行数<100