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;この醜い例外が発生します。

スレッド「main」の例外java.lang.UnsupportedOperationExceptionatorg.neo4j.rest.graphdb.AbstractRemoteDatabase.getNodeManager(AbstractRemoteDatabase.java:144)at org.neo4j.rest.graphdb.RestGraphDatabase.getNodeManager(RestGraphDatabase.java:33)at org.neo4j.tooling.GlobalGraphOperations。(GlobalGraphOperations.java:39)at org.neo4j.tooling.GlobalGraphOperations.at(GlobalGraphOperations.java:51)at 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)。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。 apply(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)at scala.collection.immutable.List.flatMap(List.scala:45)at org.neo4j.cypher.internal.pipes.StartPipe.createResults(StartPipe.scala:37)atorg。 neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31)at org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults(NamedPathPipe.scala:26)atorg.neo4j.cypher.internal.pipes。 FilterPipe。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.ExtractPipe.createResults(ExtractPipe.scala:37)at org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39)at org.neo4j.cypher.internal .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 .scala:39)org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl $$ anonfun $ 4 $$ anonfun $ apply $ 2.apply(ExecutionPlanImpl.scala:95)atorg。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)at java.lang.String.valueOf(String.java:2826)at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:185)atscala.collection。TraversableOnce $$ anonfun $ addString $ 1.apply(TraversableOnce.scala:287)at scala.collection.Iterator $ class.foreach(Iterator.scala:660)at scala.Product $$ anon $ 1.foreach(Product.scala:38) at scala.collection.TraversableOnce $ class.addString(TraversableOnce.scala:285)at scala.Product $$ anon $ 1.addString(Product.scala:38)at 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 )at java.lang.String.valueOf(String.java:2826)at java.io.PrintStream.println(PrintStream.java:771)660)at scala.Product $$ anon $ 1.foreach(Product.scala:38)at scala.collection.TraversableOnce $ class.addString(TraversableOnce.scala:285)at scala.Product $$ anon $ 1.addString(Product.scala :38)at 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)at java.lang.String.valueOf(String.java:2826)at java.io.PrintStream.println(PrintStream.java:771)660)at scala.Product $$ anon $ 1.foreach(Product.scala:38)at scala.collection.TraversableOnce $ class.addString(TraversableOnce.scala:285)at scala.Product $$ anon $ 1.addString(Product.scala :38)at 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)at java.lang.String.valueOf(String.java:2826)at 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)atscala.collection。 JavaConversions $ IteratorWrapper.toString(JavaConversions.scala:561)at java.lang.String.valueOf(String.java:2826)at 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)atscala.collection。 JavaConversions $ IteratorWrapper.toString(JavaConversions.scala:561)at java.lang.String.valueOf(String.java:2826)at 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 に答える