如何从Java中的ExecutionResult中提取集合?

时间:2014-05-28 12:41:49

标签: java collections neo4j cypher

给出以下查询:

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

如何从Collection<Long>获得ExecutionResult? AFAIK,Node#getProperty()方法只能返回原始类型,所以我不能使用它。有可能吗?

1 个答案:

答案 0 :(得分: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

根据Class#getName()的Java文档,它表示返回的对象类型是原始long数组。

所以现在我可以这样做并将我的号码返回到一个集合中:

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