2009-11-09 25 views
2

我做一個目錄使用Hibernate上市,以避免大量數據的每個查詢,我使用的是:休眠:網頁結果,並知道結果的大小

Criteria paging = sess.createCriteria(Principal.class); 
paging.setFirstResult((int) resultSetStart); 
paging.setMaxResults(resultSetSize); 
... 
List<Principal> principals = paging.list(); 

現在,這工作得很好:我想這完全是resultSetSize的結果。不過,我想做一些像Google一樣的內容,「將Y顯示爲X頁」。

如何知道條目總數?或總頁數?

回答

0

確實沒有辦法在不調用某個COUNT()查詢的情況下獲取所有結果的數量。因此,無論你必須做一些近似(如谷歌一樣),或者你可以算總的實體的數量,您通過執行查詢之前:

paging.setProjection(Projections.rowCount());

+0

所以我需要做兩個查詢,一個用於行數,另一個爲實際數據? – malaverdiere 2009-11-09 13:04:11

+0

如果你確實想得到確切的結果,那麼是的。但在開始擔心性能之前,請檢查底層數據庫的文檔,因爲它可能會非常有效地完成此操作。 – candiru 2009-11-09 14:16:15