在Java中执行Cypher查询到Neo4j服务器时出现UnsupportedOperationException [英] UnsupportedOperationException while executing Cypher Query in Java to Neo4j Server

查看:105
本文介绍了在Java中执行Cypher查询到Neo4j服务器时出现UnsupportedOperationException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm query a Neo4j Server with the following Cypher nad it works fine:

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; 当我尝试打印结果时,我得到了这个丑陋的异常

If I change the first line of the query to START n = node(*) RETURN n LIMIT 10; I get this ugly exception when I try to print the result:


线程main中的异常java.lang.UnsupportedOperationException
at org.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 $ createStartPi pe $ 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)
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.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)
at org.neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31)
at org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults(NamedPathPipe.scala:26)
at org.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)
at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37)
在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(ColumnFilterPipe.scala:39)
在 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)
at java.lang.String.valueOf(String.java:2826)
at scala.collection.mutable.StringBuilder。在scal上追加(StringBuilder.scala:185)
a.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)
在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)

Exception in thread "main" java.lang.UnsupportedOperationException at org.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) 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.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) at org.neo4j.cypher.internal.pipes.MatchPipe.createResults(MatchPipe.scala:31) at org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults(NamedPathPipe.scala:26) at org.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) 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.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) at java.lang.String.valueOf(String.java:2826) at scala.collection.mutable.StringBuilder.append(StringBuilder.scala:185) at scala.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)

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

Also, things like System.out.println(result.columns()) work fine and I can execute everything perfectly from the console... What's going on?

编辑:

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

The query seems to return too fast, is there anything that I should do 'to make java wait' for a full response?

推荐答案

不要这样做!

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

Use new RestCypherQueryEngine(restGraphDb.getRestAPI()) instead, otherwise all your queries are run on the client and each database access goes over the network.

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

And make sure to use parameters in your queries.

使用:

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

这篇关于在Java中执行Cypher查询到Neo4j服务器时出现UnsupportedOperationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆