Используйте результаты работы драйвера Neo4j в Java

#java #neo4j

#java #neo4j

Вопрос:

Используя Neo4j driver для Java, я хочу отправить поисковый запрос в базу данных, например:

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

Сначала я создаю сеанс и использую методы запуска драйвера для выполнения запроса:

 Result run = session.run(query);
  

переменная run содержит список записей. Мой вопрос в том, как я могу использовать записи, чтобы я мог преобразовать их в объекты Java? Я пытался получить значения результатов, но поскольку они не являются итеративными, получить их один за другим невозможно.

Ответ №1:

Result реализует Iterator<Record> , поэтому существует множество способов его использования, например:

Цикл While (стиль Java 6):

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

Поток (стиль Java 8 ):

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

Result.list(функция<Запись, T> mapFunction) , используя:

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

Сопоставление с объектом Java довольно быстро:

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

Хотя вместо отображения результатов вручную вы можете использовать neo4j-ogm