我对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;
}
}
}
它曾经正常工作。由于某种原因,它停止正常工作。 我的问题是,在执行查询之后,即使我可以看到通过调试返回了数百个结果;程序跳过结果集上的迭代并跳转到最后一行,就好像迭代器中没有结果一样。
我可能出现的逻辑缺陷是什么? 我感谢任何帮助。
答案 0 :(得分:1)
你可以尝试一下,因为我曾经遇到过一个非常类似的问题 -
执行查询后,即在行ExecutionResult rs = engine.execute(query, params);
调用 hasNext()即
rs.hasNext();
在调用 for 循环之前。我相信这是因为一旦你打电话给 hasNext()
,结果会被强行取出