1

我对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;
            }
        }
    }

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

我可能犯的逻辑缺陷是什么?我很感激任何帮助。

4

1 回答 1

1

你能试试这个吗,因为我曾经遇到过一个非常相似的问题 -

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

调用hasNext()

rs.hasNext();

就在调用for循环之前。我相信这是因为一旦你调用hasNext()就会懒惰地强制获取结果

于 2013-05-01T12:45:48.757 回答