2012-10-16 34 views
0
queryString = " ..." ; 
    ItemIterable<QueryResult> results = session.query(queryString, false); 
    // this line simply fails, it doesn't throw an exception. 
    for (QueryResult qResult : results) { 
     // .... 
    } 

有沒有什麼辦法來檢查是否結果是開始for循環之前是空的?如何檢查查詢CMIS存儲庫返回空

謝謝

+0

看起來沒有別的辦法,只能嘗試捕捉任何可能發生的異常。 – LeTex

回答

0

session.query()方法不會聯繫存儲庫。它只准備一個對象('結果'),可以與存儲庫對話並執行查詢。只要你沒有從這個「結果」對象中拉出來,它就不知道結果集的任何內容。在你的例子中,for循環第一次拉。如果結果集爲空,則跳過循環。

如果你不喜歡用循環來檢查是否有結果,你可以在循環之前做到這一點:

if (results.getPageNumItems() == 0) { 
    // break here 
} 

的getPageNumItems()方法獲取查詢的第一批(頁)結果。如果結果集爲空,則第一批爲空。在性能方面,如果您執行此操作或檢查循環是否被跳過,則無關緊要。兩者都與服務器進行相同的往返。

它不應該拋出異常,拋出。如果確實如此,請檢查您的查詢並根據異常情況與您的存儲庫供應商進行交談。