Учитывая следующий запрос:
CREATE (versionNode:Version {previousVersions: [4,3,2,1]})
RETURN versionNode.previousVersions AS versions
как я могу получить Collection<Long>
из ExecutionResult
? AFAIK, метод Node#getProperty()
может возвращать только примитивные типы, поэтому я не могу использовать это. Является ли это возможным?
Я нашел решение. Этот код заставил меня понять это:
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);
}