2013-07-26 55 views
0

我正在使用hibernate和spring的應用程序。我試圖通過使用ScrollableResults來查詢得到的結果的數量,但由於查詢包含很多連接(內部連接),結果包含多次重複的id。當我使用它來知道從數據庫返回的唯一行(或唯一標識符)的總數時,這會爲ScrollableResults創建問題。請幫忙。代碼的某些部分是下面:ScrollableResults大小給出了重複的值

 StringBuffer queryBuf = new StringBuffer("Some SQL query with lots of Joins"); 

     Query query = getSession().createSQLQuery(queryBuf.toString()); 

     query.setReadOnly(true); 


     ScrollableResults results = query.scroll(); 
     if (results.isLast() == false) 
      results.last(); 
     int total = results.getRowNumber() + 1; 

     logger.debug(">>>>>>TOTAL COUNT<<<<<< = {}", total); 

它使總數1440,但實際的唯一排在數據庫提前504 感謝。

回答

1

您可以嘗試

Integer count= ((Long)query.uniqueResult()).intValue(); 
+0

當然,我會嘗試。謝謝。 – newProgramer

+0

我也一樣,但需要很長時間。在我看來,uniqueResult()會遍歷所有記錄,在這種情況下,我無法從使用ScrollableResults中獲得... – IntelliData

相關問題