首页 文章

在Java中执行Cypher查询到Neo4j服务器时出现UnsupportedOperationException

提问于
浏览
2

我正在使用以下Cypher nad查询Neo4j服务器它工作正常:

GraphDatabaseService neo4j = new RestGraphDatabase("http://my.ip:7474/db/data");
ExecutionEngine engine = new ExecutionEngine(
String myCypher = "START n = node(1234) RETURN n LIMIT 10;"
ExecutionResult result = engine.execute(myCypher);
System.out.println(result);

如果我将查询的第一行更改为 START n = node(*) RETURN n LIMIT 10; ,我会得到这个丑陋的异常 when I try to print the result

org.neo4j.rest.graphdb.RestGraphDatabase.getNodeManager(RestGraphDatabase.java:33)中的org.neo4j.rest.graphdb.AbstractRemoteDatabase.getNodeManager(AbstractRemoteDatabase.java:144)中的线程“main”java.lang.UnsupportedOperationException中的异常org.neo4j.tooling.GlobalGraphOperations . (GlobalGraphOperations.java:39)org.neo4j.tooling.GlobalGraphOperations.at(GlobalGraphOperations.java:51)org.neo4j.cypher.internal.executionplan.builders.GraphGlobalStartBuilder $$ anonfun $ createStartPipe $ 1.apply(GraphGlobalStartBuilder.scala:51)org.neo4j.cypher.internal.executionplan.builders.GraphGlobalStartBuilder $$ anonfun $ createStartPipe $ 1.apply(GraphGlobalStartBuilder.scala:51)at org.neo4j.cypher.internal . pipes.StartPipe $$ anonfun $ 1.apply(StartPipe.scala:38)at org.neo4j.cypher.internal.pipes.StartPipe $$ anonfun $ 1.apply(StartPipe.scala:37)at scala.collection.TraversableLike $$ anonfun $ flatMap $ 1.apply(TraversableLike.scala:200)at scala.collection.TraversableLike $$ anonfun $ flatMap $ 1.app ly(TraversableLike.scala:200)at scala.collection.LinearSeqOptimized $ class.foreach(LinearSeqOptimized.scala:59)at scala.collection.immutable.List.foreach(List.scala:45)at scala.collection.TraversableLike $ class .flatMap(TraversableLike.scala:200)位于org.neo4j.cypher.internal.pipes.StartPipe.createResults(StartPipe.scala:37)的scala.collection.immutable.List.flatMap(List.scala:45) . 位于org.neo4j.cypher.internal.pipes的org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults(NamedPathPipe.scala:26)中的neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31) . FilterPipe.createResults(FilterPipe.scala:28)位于org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala: 49)org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)atg.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39)at org.ne位于org.neo4j.cypher.internal.pipes的org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)中的o4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:49) . ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39)at org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl $$ anonfun $ 4 $$ anonfun $ apply $ 2.apply(ExecutionPlanImpl.scala:95)at org.neo4j.cypher.internal . executionplan.ExecutionPlanImpl $$ anonfun $ 4 $$ anonfun $ apply $ 2.apply(ExecutionPlanImpl.scala:95)org.neo4j.cypher.PipeExecutionResult.immutableResult(PipeExecutionResult.scala:37)at org.neo4j.cypher.PipeExecutionResult.iterator( PipeExecutionResult.scala:153)在scala.collection.Iterator上的org.neo4j.cypher.PipeExecutionResult.hasNext(PipeExecutionResult.scala:155)scala.collection.Iterator $$ anon $ 19.hasNext(Iterator.scala:334)at scala.collection.Iterator $$ anon $ 19.hasNext(Iterator.scala:334)at scala.collection.Iterator $ class.toString(Iterator.scala:1030)at scala.collection.Iterator $$ anon $ 19.toStri ng(Iterator.scala:333)at java.lang.String.valueOf(String.java:2826)at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:185)at scala.collection.TraversableOnce $$ anonfun $ scala.collection.Iterator上的scala.collection.Iterator $ class.foreach(Iterator.scala:660)中的addString $ 1.apply(TraversableOnce.scala:287)scala.Product $$ anon $ 1.foreach(Product.scala:38)at scala.collection . TraversableOnce $ class.addString(TraversableOnce.scala:285)scala.Product $$ anon $ 1.addString(Product.scala:38)at scala.collection.TraversableOnce $ class.mkString(TraversableOnce.scala:263)at scala.Product来自java.lang上的scala.collection.JavaConversions $ IteratorWrapper.toString(JavaConversions.scala:561)的scala.runtime.ScalaRunTime $ ._ toString(ScalaRunTime.scala:175)上的$ anon $ 1.mkString(Product.scala:38) java.io.PrintStream.println中的.String.valueOf(String.java:2826)(PrintStream.java:771)

此外, System.out.println(result.columns()) 之类的工作正常,我可以从控制台完美地执行所有操作......发生了什么?

EDIT:

查询似乎返回得太快,有什么我应该做的'让java等待'完整响应?

2 回答

  • 0

    不要那样做!

    请改用 new RestCypherQueryEngine(restGraphDb.getRestAPI()) ,否则所有查询都在客户端和每个数据库上运行访问通过网络 .

    并确保在查询中使用参数 .

    使用:

    QueryResult<Map<String, Object>> query(String statement, Map<String, Object> params)
    
  • 2

    来自这篇文章:https://stackoverflow.com/a/6953423/1498109

    我猜你试图将对象/数组转换为字符串 System.out.println(result)

相关问题