gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:28:54 24 4
gpt4 key购买 nike

我正在使用以下 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; 当我尝试打印结果时出现这个难看的异常:

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()) 之类的东西工作正常,我可以从控制台完美地执行所有操作...这是怎么回事?

编辑:

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

最佳答案

不要那样做!

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

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

使用:

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

关于java - 在 Java 中对 Neo4j 服务器执行 Cypher 查询时出现 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com