如何检查查询cmis存储库是否返回空

时间:2012-10-16 07:49:43

标签: cmis

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

在启动for循环之前,有没有办法检查结果是否为空?

感谢

1 个答案:

答案 0 :(得分:0)

session.query()方法不与存储库联系。它只准备一个可以与存储库通信并执行查询的对象('结果')。只要你没有从这个'结果'对象中拉出来,它就不知道结果集的任何信息。在您的示例中,for-loop第一次拉动。如果结果集为空,则跳过循环。

如果您不想使用循环来检查是否有结果,您可以在循环之前执行此操作:

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

getPageNumItems()方法获取查询结果的第一批(页面)。如果结果集为空,则第一批为空。在性能方面,如果您这样做或检查是否已跳过循环并不重要。两者都在对服务器进行相同的往返。

它不应抛出异常,抛出。如果是,请检查您的查询,并根据异常情况与您的存储库供应商联系。