2013-07-31 24 views
1

我正在嘗試提取與某些謂詞匹配的count(*)。我每次使用createSQLQuery,我發現自己不得不沿線的編寫代碼,獲取單個ScrollableResults行

// skipped code 
Query q = session.createSQLQuery("select count(*) from A where id=1"); 
Scrollable results = q.scroll(); 

while (results.next()) 
{ 
    Object[] row = Object[] results.get(); 
    // Assign it 
    String str = row[0]; 
    //set and persist 
} 

我有聯合在一起在一個單一的交易很多這樣的疑問。我如何在這裏獲得單一結果?我錯過了什麼嗎?

回答

1

你可以用這個方法來代替:

Object[] row = (Object[]) query.uniqueResult(); 

如果查詢返回不止一個結果,這個方法會拋出異常

編輯:

最重要的是,你可以使用ResultTransformerObject[]轉換爲Integer。這將刪除需要獲得結果數組,然後提取它的第一個條目。看到這example欲瞭解更多信息

+0

謝謝!順便說一下,我錯誤地認爲該物體沒有排列? –