java - 无法迭代 ExecutionResult

标签 java neo4j cypher resultset

我编写了一个测试,复制 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/

相关文章:

java - 如何在 Neo4j 中查找特定节点

Neo4j 如何避免 super 节点

python - Neo4j cypher 查询结果到 Pandas DataFrame

java - 无法从 Android 应用程序中的 Google map 获取当前位置

java - 如何在Android上使用jena本体API?

java - 我可以从ftl中的函数调用宏吗

javascript - 查询不能直接在具有打开事务的 session 上运行;从事务内运行或使用不同的 session

java - 使用 GSON 序列化/反序列化包含特殊枚举(不是字符串枚举)的 POJO

neo4j - 如何使用 Cypher 从单个节点删除数百万个关系

Neo4j 使用 apoc.merge.relationship() 时向关系添加属性