queryString = " ..." ;
ItemIterable<QueryResult> results = session.query(queryString, false);
// this line simply fails, it doesn't throw an exception.
for (QueryResult qResult : results) {
// ....
}
在启动for循环之前,有没有办法检查结果是否为空?
感谢
答案 0 :(得分:0)
session.query()方法不与存储库联系。它只准备一个可以与存储库通信并执行查询的对象('结果')。只要你没有从这个'结果'对象中拉出来,它就不知道结果集的任何信息。在您的示例中,for-loop第一次拉动。如果结果集为空,则跳过循环。
如果您不想使用循环来检查是否有结果,您可以在循环之前执行此操作:
if (results.getPageNumItems() == 0) {
// break here
}
getPageNumItems()方法获取查询结果的第一批(页面)。如果结果集为空,则第一批为空。在性能方面,如果您这样做或检查是否已跳过循环并不重要。两者都在对服务器进行相同的往返。
它不应抛出异常,抛出。如果是,请检查您的查询,并根据异常情况与您的存储库供应商联系。