我编写了一个测试,复制 here 中的官方密码查询示例并添加所需的 Actor 阵容。然后它失败了:
java.lang.ClassCastException: scala.collection.Iterator$$anon$11 cannot be cast to java.util.Iterator ...
。这是代码:
@Test
public void testCreateWithCypher() {
ExecutionEngine engine = new ExecutionEngine(db, StringLogger.SYSTEM);
try (Transaction transaction = db.beginTx()) {
String cypher = "CREATE (x:Person {name: 'John'})" +
"RETURN x";
ExecutionResult result = engine.execute(cypher);
Iterator<Node> n_column = (Iterator<Node>) result.columnAs("x");
for (Node node : IteratorUtil.asIterable(n_column)) {
String nodeResult = node + ": " + node.getProperty("name");
}
transaction.success();
}
}
如果没有强制转换,它将无法编译,因为 columnAs
返回Iterator<Object>
。这是什么 scala.collection.Iterator$$anon$11
顺便做一下吗?我以为是extended java.lang.Iterator
?
我只想要一个Iterator<Node>
这样我就可以从 ExecutionResult
获取东西。没有 Actor 阵容怎么能做到这一点?我的项目将这些依赖项用于 ${neo4.version}
= 2.0.1:
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-cypher</artifactId>
<version>${neo4j.version}</version>
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-kernel</artifactId>
<version>${neo4j.version}</version>
<type>test-jar</type>
</dependency>
最佳答案
您可能使用的是 org.neo4j.cypher.ExecutionEngine
而不是 org.neo4j.cypher。
javacompat.ExecutionEngine
。第一个是在 Scala 中实现的,您不能直接将 Scala 对象转换为 Java 对象(AFAIK)。
关于java - 无法迭代 ExecutionResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23059760/