【问题标题】:Cannot iterate over ExecutionResult无法迭代 ExecutionResult
【发布时间】:2014-04-14 12:10:32
【问题描述】:

我编写了一个测试,从here 复制官方密码查询示例并添加所需的演员表。然后它失败了: 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&lt;Object&gt;。顺便问一下,这个scala.collection.Iterator$$anon$11 在做什么?我以为是extendedjava.lang.Iterator

我只想要一个Iterator&lt;Node&gt;,这样我就可以从ExecutionResult 获得东西。没有演员怎么能做到这一点?我的项目将这些依赖项用于${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>

【问题讨论】:

    标签: java neo4j cypher resultset


    【解决方案1】:

    您可能正在使用org.neo4j.cypher.ExecutionEngine 而不是org.neo4j.cypher.javacompat.ExecutionEngine。第一个是在 Scala 中实现的,您不能直接将 Scala 对象转换为 Java 对象 (AFAIK)。

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 1970-01-01
      • 2011-11-10
      • 2019-03-26
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多