2012-12-10 84 views
2

我查询用下面的Cypher支架河畔一个Neo4j的服务器正常工作:UnsupportedOperationException异常而在Java执行的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.UnsupportedOperationException 在org.neo4j.rest.graphdb.AbstractRemoteDatabase.getNodeManager

异常(AbstractRemoteD atabase.java:144) 在org.neo4j.rest.graphdb.RestGraphDatabase.getNodeManager(RestGraphDatabase.java:33) 在org.neo4j.tooling.GlobalGraphOperations。(GlobalGraphOperations.java:39) 在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.Traversabl eLike $$ 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.Fi lterPipe.createResults(FilterPipe.scala:28) at org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37) at org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults(EagerAggregationPipe。阶:49) 在org.neo4j.cypher.internal.pipes.ExtractPipe.createResults(ExtractPipe.scala:37) 在org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults(ColumnFilterPipe.scala:39) 在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.ExecutionPla nImpl $$ 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) 在org.neo4j.cypher.PipeExecutionResult.iterator(PipeExecutionResult.scala:153) 在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。斯卡拉: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(Iterator.scala:660) at scala.Product $$ anon $ 1.foreach(Product.scala:38) at scala。在scala.Product $$ anon $ 1.addString(Product.scala:38) at scala.collection.TraversableOnce $ class.mkString(TraversableOnce.scala:263) (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)

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

编辑:

查询似乎太快了回报,有什么,我应该做的“以使Java等待”一个完整的回应?

+0

似乎是奇怪。如果您在纯密码控制台中执行查询(例如,通过weadmin),您会得到什么?从控制台的 – ulkas

+0

它工作正常,我得到10个节点回来 – Gevorg

回答

2

不要那样做!

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

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

用途:

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