我正在使用嵌入了规模的Neo4j 1.9。 运行此代码时,我在第5行中有一条错误消息: java.lang.ClassCastException:scala.collection.immutable.Stream $ Cons无法强制转换为org.neo4j.graphdb.Node
这是我的代码:
val _shortestPathQuery= """
START n=node:node_auto_index(tag="body"),m=node:node_auto_index(tag="#text")
MATCH p=shortestPath( n-[r:FATHER*..]-m )
WHERE m.text =~ '.*%s.*'
RETURN NODES(p) as pathnodes;
""".stripMargin.format(toSearch)
val tx = graphDb.beginTx()
val result = engine.execute( _shortestPathQuery )
val decPath:Iterator[org.neo4j.graphdb.Node] = result.columnAs("pathnodes")
for ( node:org.neo4j.graphdb.Node <- decPath)
{
println(node + ": " + node.getProperty("nodeid") + " " + node.getId)
}
我找到了很多java代码,但我无法在Scala中进行转换。
如果我打印结果:println(result.dumpToString())我看到正确的行。
非常感谢
答案 0 :(得分:0)
您返回一个包含Iterable
个节点的列。
所以也许使用:
val _shortestPathQuery= """
START n=node:node_auto_index(tag="body"),m=node:node_auto_index(tag="#text")
MATCH p=shortestPath( n-[r:FATHER*..]-m )
WHERE m.text =~ '.*%s.*'
RETURN NODES(p) as pathnodes;
""".stripMargin.format(toSearch)
val tx = graphDb.beginTx()
val result = engine.execute( _shortestPathQuery )
val decPath:Iterator[Iterator[org.neo4j.graphdb.Node]] = result.columnAs("pathnodes")
for ( node:org.neo4j.graphdb.Node <- nodes <- decPath )
{
println(node + ": " + node.getProperty("nodeid") + " " + node.getId)
}