2012-11-06 26 views
0

我有一個包含1000條記錄的表。獲取特定數量的記錄在休眠中不工作

我需要在同一時間,所以我用在如下面休眠標準setFetchSize拉100個記錄(Deal是實體對象)

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

但是,上面的查詢後,當我打印dealList尺寸

System.out.println("no. of deals "+dealList.size()); 

它給了1000條記錄而不是100條記錄。

我錯過了什麼嗎?

回答

3

您將需要setMaxResults()

訪存大小是JDBC優化,而不是對執行的查詢的限制。有關setFetchSize()setMaxSize()this thread的更多信息,請參閱this thread瞭解兩者如何爲您一起工作。

0

使用setMaxResultssetFirstResult得到下一個記錄。

更新

java.sql.Statement#setFetchSize的javadoc:

爲JDBC驅動程序提供提示以應 從數據庫時,需要對 更多的行中獲取的行數ResultSet由此生成的對象Statement。 如果指定的值爲零,則提示將被忽略。 默認值爲零。

+0

什麼用的setFetchSize的呢?可能是我的理解在setFetchSize的情況下是錯誤的?你能告訴我嗎? – Anand

+0

更新了我的答案。 –

0

使用setMaxResults(100)限制讀取的行數爲100