【问题标题】:how to check if querying the cmis repository returns empty如何检查查询 cmis 存储库是否返回空
【发布时间】:2012-10-16 07:49:42
【问题描述】:
    queryString = " ..." ;
    ItemIterable<QueryResult> results = session.query(queryString, false);
    // this line simply fails, it doesn't throw an exception.
    for (QueryResult qResult : results) {
       // ....
    }

有没有办法在开始 for 循环之前检查 results 是否为空?

谢谢

【问题讨论】:

  • 看起来除了尝试捕获任何可能发生的异常之外别无他法。

标签: cmis


【解决方案1】:

session.query() 方法不联系存储库。它只准备一个可以与存储库对话并执行查询的对象(“结果”)。只要您没有从这个“结果”对象中提取,它就对结果集一无所知。在您的示例中,for 循环第一次拉动。如果结果集为空,则跳过循环。

如果你不喜欢使用循环来检查是否有结果,你可以在循环之前这样做:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-08-22
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    相关资源
    最近更新 更多