Marsellus Wallace
Marsellus Wallace

Reputation: 18601

UnsupportedOperationException while executing Cypher Query in Java to Neo4j Server

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);

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:

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)

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

EDIT:

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

Upvotes: 2

Views: 685

Answers (2)

Michael Hunger
Michael Hunger

Reputation: 41676

Don't do that!

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.

Use:

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

Upvotes: 2

ulkas
ulkas

Reputation: 5918

from this post: https://stackoverflow.com/a/6953423/1498109

i guess you are trying to convert an object/array to string at System.out.println(result)

Upvotes: 0

Related Questions