#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