简体   繁体   中英

Consume the results of Neo4j driver in java

Using Neo4j driver for java, i want to send a search query to the database such as:

MATCH(a:`Label`{Property:"NODE_PROPERTY"})
RETURN *

First i create a session and the i use the run methods of the driver to run a query:

Result run = session.run(query);

run variable contains a list of Records. My question is how can i consume the records so that i can convert them to java objects? I tried to get the values of the results but since they're not iterable, it's not possible to get them one by one.

Result implements Iterator<Record> , so there is a bunch of ways of consuming it, eg:

While loop (Java 6 style):

Result result = session.run(query);
List<MyPojo> myList = new ArrayList<>();
while(result.hasNext()) {
    Record r = result.next();
    myList.add(mapToMyPojo(r));
}

Stream (Java 8+ style):

Result result = session.run(query);
List<MyPojo> myList = result.stream()
    .map(record -> mapToMyPojo(record))
    .collect(Collectors.toList());

Using Result.list(Function<Record,T> mapFunction) :

Result result = session.run(query);
List<MyPojo> myList = result.list(r -> mapToMyPojo(r));

Mapping to a Java object is pretty stright-forward:

public MyPojo mapToMyPojo(Record record) {
    MyPojo pojo = new MyPojo();
    pojo.setProperty(record.get("Property").asString());
    // ...
    return pojo;
}

Although instead of mapping results manually, you might want to use neo4j-ogm

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM