2009-02-06 80 views
9

我試圖使用setFirstResult()setMaxResults()做Hibernate的分頁,但在第一個結果設置爲0Hibernate的setFirstResult()共用問題

時做的時候,我沒有得到預期的結果如下:

Query query = session.createQuery(queryString); 
query.setFirstResult(0); 
query.setMaxResults(30); 
List list = query.list(); //list.size() returns 10 

但如果我的第一個結果設置爲1(或任何比0不同也如此):

query.setFirstResult(1); 
query.setMaxResults(30); 
List list = query.list(); //list.size() returns 30 

我讀過這是jdbc驅動程序中的一個已知錯誤,但我搜索了一個解決方案,而且我似乎無法找到它。有沒有人跑過類似的東西,找到了解決辦法?

回答

13

顯然加入setFetchSize()是有竅門的。因此,像現在這樣完美的作品:

query.setFirstResult(0); 
query.setMaxResults(30); 
query.setFetchSize(30); 
List list = query.list(); //list.size() now returns... wait for it... 30 
+3

你太棒了!我只是有這個確切的問題,`setFetchSize()`立即修復它。 – Nick 2011-06-14 15:04:18