2

我正在使用以下 Cypher 查询 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;我得到这个丑陋的异常:

org.neo4j.rest.graphdb.RestGraphDatabase.getNodeManager(RestGraphDatabase.java:33) 处 org.neo4j.rest.graphdb.AbstractRemoteDatabase.getNodeManager(AbstractRemoteDatabase.java:144) 处的线程“主”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) at 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) 在 org.neo4j.cypher.internal。在 scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200) 在 scala.collection.TraversableLike$$anonfun$flatMap$1 的管道.StartPipe$$anonfun$1.apply(StartPipe.scala:37)。应用(TraversableLike.scala:200)在 scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 在 scala.collection.immutable.List.foreach(List.scala:45) 在 scala.collection.TraversableLike$class .flatMap(TraversableLike.scala:200) at scala.collection.immutable.List.flatMap(List.scala:45) at org.neo4j.cypher.internal.pipes.StartPipe.createResults(StartPipe.scala:37) at org. neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31) 在 org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults(NamedPathPipe.scala:26) 在 org.neo4j.cypher.internal.pipes。过滤管。createResults(FilterPipe.scala:28) at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37) at org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:49)在 org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39) 在 org.neo4j.cypher.internal 的 org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37) .pipes.EagerAggregationPipe.createResults(EagerAggregationPipe.scala:49) at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37) at org.neo4j.cypher.internal.pipes.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) at org.neo4j.cypher.PipeExecutionResult.immutableResult(PipeExecutionResult.scala:37) at org.neo4j。 cypher.PipeExecutionResult.iterator(PipeExecutionResult.scala:153) at org.neo4j.cypher.PipeExecutionResult.hasNext(PipeExecutionResult.scala:155) at 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.toString(Iterator.scala :333) 在 java.lang.String.valueOf(String.java:2826) 在 scala.collection.mutable.StringBuilder.append(StringBuilder.scala:185) 在 scala.collection。TraversableOnce$$anonfun$addString$1.apply(TraversableOnce.scala:287) at scala.collection.Iterator$class.foreach(Ite​​rator.scala:660) at scala.Product$$anon$1.foreach(Product.scala:38)在 scala.collection.TraversableOnce$class.addString(TraversableOnce.scala:285) 在 scala.Product$$anon$1.addString(Product.scala:38) 在 scala.collection.TraversableOnce$class.mkString(TraversableOnce.scala:263 ) at scala.Product$$anon$1.mkString(Product.scala:38) at scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala:175) at scala.collection.JavaConversions$IteratorWrapper.toString(JavaConversions.scala:561 ) 在 java.lang.String.valueOf(String.java:2826) 在 java.io.PrintStream.println(PrintStream.java:771)660) 在 scala.Product$$anon$1.foreach(Product.scala:38) 在 scala.collection.TraversableOnce$class.addString(TraversableOnce.scala:285) 在 scala.Product$$anon$1.addString(Product.scala :38) 在 scala.collection.TraversableOnce$class.mkString(TraversableOnce.scala:263) 在 scala.Product$$anon$1.mkString(Product.scala:38) 在 scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala :175) 在 scala.collection.JavaConversions$IteratorWrapper.toString(JavaConversions.scala:561) 在 java.lang.String.valueOf(String.java:2826) 在 java.io.PrintStream.println(PrintStream.java:771)660) 在 scala.Product$$anon$1.foreach(Product.scala:38) 在 scala.collection.TraversableOnce$class.addString(TraversableOnce.scala:285) 在 scala.Product$$anon$1.addString(Product.scala :38) 在 scala.collection.TraversableOnce$class.mkString(TraversableOnce.scala:263) 在 scala.Product$$anon$1.mkString(Product.scala:38) 在 scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala :175) 在 scala.collection.JavaConversions$IteratorWrapper.toString(JavaConversions.scala:561) 在 java.lang.String.valueOf(String.java:2826) 在 java.io.PrintStream.println(PrintStream.java:771)TraversableOnce$class.mkString(TraversableOnce.scala:263) at scala.Product$$anon$1.mkString(Product.scala:38) at scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala:175) at scala.collection. JavaConversions$IteratorWrapper.toString(JavaConversions.scala:561) 在 java.lang.String.valueOf(String.java:2826) 在 java.io.PrintStream.println(PrintStream.java:771)TraversableOnce$class.mkString(TraversableOnce.scala:263) at scala.Product$$anon$1.mkString(Product.scala:38) at scala.runtime.ScalaRunTime$._toString(ScalaRunTime.scala:175) at scala.collection. JavaConversions$IteratorWrapper.toString(JavaConversions.scala:561) 在 java.lang.String.valueOf(String.java:2826) 在 java.io.PrintStream.println(PrintStream.java:771)

此外,System.out.println(result.columns())工作正常,我可以从控制台完美地执行所有操作......这是怎么回事?

编辑:

查询似乎返回得太快,我应该做些什么“让 java 等待”以获得完整响应?

4

2 回答 2

2

不要那样做!

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

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

利用:

QueryResult<Map<String, Object>> query(String statement, Map<String, Object> params)
于 2012-12-16T21:16:36.550 回答
0

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

我猜您正在尝试将对象/数组转换为字符串System.out.println(result)

于 2012-12-11T15:32:00.423 回答