Как извлечь коллекцию из ExecutionResult в Java?

1

Учитывая следующий запрос:

CREATE (versionNode:Version {previousVersions: [4,3,2,1]}) 
RETURN versionNode.previousVersions AS versions

как я могу получить Collection<Long> из ExecutionResult? AFAIK, метод Node#getProperty() может возвращать только примитивные типы, поэтому я не могу использовать это. Является ли это возможным?

Теги:
neo4j
cypher
collections

1 ответ

1
Лучший ответ

Я нашел решение. Этот код заставил меня понять это:

String cypher = "CREATE (versionNode:Version {previousVersions: [4,3,2,1]}) " +
                "RETURN versionNode.previousVersions AS versions";
ExecutionResult result = new ExecutionEngine(db).execute(cypher);
System.out.println(result.iterator().next().get("versions").getClass());

это выдало странный символ:

class [J

В соответствии с документами Java для Class#getName() это означает, что тип возвращаемого объекта является примитивным long массивом.

Итак, теперь я могу это сделать и вернуть числа в коллекцию:

Collection<Long> versionsCollection = new ArrayList<>();
long[] versions = (long[]) result.iterator().next().get("versions");
for (long v : versions) {
  versionsCollection.add(v);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню