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

在开始 for-loop 之前有什么方法可以检查结果是否为空?

谢谢

4

1 回答 1

0

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

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

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

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

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

于 2012-10-17T08:27:11.883 回答