2014-04-14 6 views
0

Я написал тест, скопировав официальный пример запроса cypher от here и добавив необходимый литой. Затем он терпит неудачу: java.lang.ClassCastException: scala.collection.Iterator$$anon$11 cannot be cast to java.util.Iterator .... Это код:Невозможно выполнить итерацию ExecutionResult

@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 делать, кстати? Я думал, что это extendedjava.lang.Iterator?

Я просто хочу Iterator<Node>, так что я могу получить материал от 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> 

ответ

2

Вы, вероятно, используют org.neo4j.cypher.ExecutionEngine вместо org.neo4j.cypher.javacompat.ExecutionEngine. Первый реализован в Scala, и вы не можете напрямую передавать объекты Scala в Java (AFAIK).

+0

Спасибо! Ты мужчина! –

Смежные вопросы