Javadoc for Cypher is not very clear about this, perhaps because it is not there.
So, I recreated your code in the “trial version”, which demonstrates how to iterate over the properties of nodes in a match. A domain is a kind of fruit, where each kind is associated with a “fruit” node. Corresponding fragment of this word after query execution:
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)); } }
This is the key result.columnAs("x")
. The skillfully named String n
parameter refers to the "column name" in the result clause. In this example, we need the column "x", and we expect it to contain Node
objects, so we can assign it directly to Iterator<Node>
, and then use this.
If the column is not found, we get an org.neo4j.graphdb.NotFoundException
.
If we ask to assign the wrong class, we get a regular java.lang.ClassCastException
.
A full working example is available here: https://github.com/akollegger/neo4j-trials/blob/master/src/test/java/org/akollegger/neo4j/trials/richardw/ExecutionResultIteratorTrial.java
Hope this helps.
Cheers, Andreas
akollegger
source share