在neo4j中对ExecutionResult的迭代不起作用

时间:2013-05-01 09:30:43

标签: neo4j

我对neo4j不知何故。我一直在研究代码如下所示

String query = String.format("start a = node:ids({id}) match a-[e]->b return "
                + "a.id, b.id, e;", Constants.ID_NAME_INDEX);
Map<String, Object> params = new HashMap();
params.put("id, "id:" + id);
ExecutionEngine engine = new ExecutionEngine(graphDb);
ExecutionResult rs = engine.execute(query, params);
for (Map<String, Object> row : rs) {
        for (Entry<String, Object> column : row.entrySet()) {
            String key = column.getKey();
            String value = column.getValue().toString();
            switch (key) {
                case "a.id":
                    \\Some operation here
                    break;
                case "b.id":
                    \\Some operation here
                    break;
                case "e":
                    \\Some operation here
                    break;
            }
        }
    }

它曾经正常工作。由于某种原因,它停止正常工作。 我的问题是,在执行查询之后,即使我可以看到通过调试返回了数百个结果;程序跳过结果集上的迭代并跳转到最后一行,就好像迭代器中没有结果一样。

我可能出现的逻辑缺陷是什么? 我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你可以尝试一下,因为我曾经遇到过一个非常类似的问题 -

执行查询后,即在行ExecutionResult rs = engine.execute(query, params);

之后

调用 hasNext()

  

rs.hasNext();

在调用 for 循环之前。我相信这是因为一旦你打电话给 hasNext()

,结果会被强行取出