Cypher 的 javadoc 对此不是很清楚,可能是因为没有。
因此,我在“试验”中重新创建了您的代码,该代码演示了如何迭代匹配中节点的属性。域是水果的种类,其中每种都链接到“水果”节点。运行查询后,相关的片段是这样的:
Iterator<Node> kindsOfFruit = result.columnAs("x");
while (kindsOfFruit.hasNext()) {
Node kindOfFruit = kindsOfFruit.next();
System.out.println("Kind #" + kindOfFruit.getId());
for (String propertyKey : kindOfFruit.getPropertyKeys()) {
System.out.println("\t" + propertyKey + " : " +
kindOfFruit.getProperty(propertyKey));
}
}
这result.columnAs("x")
是关键。巧妙命名的String n
参数指的是结果子句中的“列名”。在这个例子中,我们想要“x”列并且我们希望它包含Node
对象,所以我们可以直接分配给 anIterator<Node>
然后使用它。
如果找不到该列,我们将得到一个org.neo4j.graphdb.NotFoundException
.
如果我们要求分配到错误的班级,我们会得到通常的java.lang.ClassCastException
.
完整的工作示例可在此处获得:
https ://github.com/akollegger/neo4j-trials/blob/master/src/test/java/org/akollegger/neo4j/trials/richardw/ExecutionResultIteratorTrial.java
希望有帮助。
干杯,安德烈亚斯