UnsupportedOperationException al ejecutar Cypher Query en Java para el servidor Neo4j
(2)
Soy consulta un Servidor Neo4j con el siguiente Cypher nad y funciona bien:
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);
Si cambio la primera línea de la consulta a START n = node(*) RETURN n LIMIT 10;
Obtengo esta fea excepción cuando intento imprimir el resultado :
Excepción en el hilo "principal" java.lang.UnsupportedOperationException en org.neo4j.rest.graphdb.AbstractRemoteDatabase.getNodeManager (AbstractRemoteDatabase.java:144) en org.neo4j.rest.graphdb.RestGraphDatabase.getNodeManager (RestGraphDatabase.java:33) en org.neo4j.tooling.GlobalGraphOperations. (GlobalGraphOperations.java:39) en org.neo4j.tooling.GlobalGraphOperations.at (GlobalGraphOperations.java:51) en org.neo4j.cypher.internal.executionplan.builders.GraphGlobalStartBuilder $$ anonfun $ createStartPipe $ 1.apply (GraphGlobalStartBuilder.scala: 51) en org.neo4j.cypher.internal.executionplan.builders.GraphGlobalStartBuilder $$ anonfun $ createStartPipe $ 1.apply (GraphGlobalStartBuilder.scala: 51) en org.neo4j.cypher.internal.pipes .StartPipe $$ anonfun $ 1.aplicación (StartPipe.scala: 38) en org.neo4j.cypher.internal.pipes.StartPipe $$ anonfun $ 1.apply (StartPipe.scala: 37) en scala.collection.TraversableLike $$ anonfun $ flatMap $ 1.apply (TraversableLike.scala: 200) en scala.collection.TraversableLike $$ anonfun $ flatMap $ 1.apply (TraversableLike.scala: 200) en scala.collection.LinearSeqOptimized $ class.foreach (LinearSeqOptimized.scala: 59) en scala.collection.immutable.List.foreach (List.scala: 45) en scala.collection.TraversableLike $ class. flatMap (TraversableLike.scala: 200) en scala.collection.immutable.List.flatMap (List.scala: 45) en org.neo4j.cypher.internal.pipes.StartPipe.createResults (StartPipe.scala: 37) en org.neo4j .cypher.internal.pipes.MatchPipe.createResults (MatchPipe.scala: 31) en org.neo4j.cypher.internal.pipes.NamedPathPipe.createResults (NamedPathPipe.scala: 26) en org.neo4j.cypher.internal.pipes.FilterPipe .createResults (FilterPipe.scala: 28) en org.neo4j.cypher.internal.pipes.ExtractPipe.createResults (ExtractPipe.scala: 37) en org.neo4j.cypher.internal.pipes.EagerAggregationPipe.createResults (EagerAggregationPipe.scala: 49 ) en org.neo4j.cypher.internal.pipes.ExtractPipe.createResults (ExtractPipe.scala: 37) en org.neo4j.cypher.internal.pipes.ColumnFilterPipe.createResults (ColumnFilterPipe.scala: 39) en org.neo4 j.cypher.internal.pipes.EagerAggregationPipe.createResults (EagerAggregationPipe.scala: 49) en org.neo4j.cypher.internal.pipes.ExtractPipe.createResults (ExtractPipe.scala: 37) en org.neo4j.cypher.internal.pipes. ColumnFilterPipe.createResults (ColumnFilterPipe.scala: 39) en org.neo4j.cypher.internal.executionplan.ExecutionPlanImpl $$ anonfun $ 4 $$ anonfun $ apply $ 2.apply (ExecutionPlanImpl.scala: 95) en org.neo4j.cypher.internal. executionplan.ExecutionPlanImpl $$ anonfun $ 4 $$ anonfun $ apply $ 2.apply (ExecutionPlanImpl.scala: 95) en org.neo4j.cypher.PipeExecutionResult.immutableResult (PipeExecutionResult.scala: 37) en org.neo4j.cypher.PipeExecutionResult.iterator ( PipeExecutionResult.scala: 153) en org.neo4j.cypher.PipeExecutionResult.hasNext (PipeExecutionResult.scala: 155) en scala.collection.Iterator $$ anon $ 19.hasNext (Iterator.scala: 334) en scala.collection.Iterator $$ anon $ 19.has Next (Iterator.scala: 334) en scala.collection.Iterator $ class.toString (Iterator.scala: 1030) en scala.collection.Iterator $$ anon $ 19.toString (Iterator.scala: 333) en java.lang.String.valueOf (String.java:2826) en scala.collection.mutable.StringBuilder.append (StringBuilder.scala: 185) en scala.collection.TraventableOnce $$ anonfun $ addString $ 1.apply (TraversableOnce.scala: 287) en scala.collection.Iterator $ class.foreach (Iterator.scala: 660) en scala.Product $$ anon $ 1.foreach (Product.scala: 38) en scala.collection.TraventableOnce $ class.addString (TraversableOnce.scala: 285) en scala.Product $$ anon $ 1.addString (Product.scala: 38) en scala.collection.TraventableOnce $ class.mkString (TraversableOnce.scala: 263) en scala.Product $ $ anon $ 1.mkString (Product.scala: 38) en scala.runtime.ScalaRunTime $ ._ toString (ScalaRunTime.scala: 175) en scala.collection.JavaConversions $ IteratorWrapper.toString (JavaConversions.scala: 561) en java.lang. String.valueOf (String.java:2826) en java.io.PrintStream.println (PrintStream.java:771)
Además, cosas como System.out.println(result.columns())
funcionan bien y puedo ejecutar todo perfectamente desde la consola ... ¿Qué está pasando?
EDITAR:
La consulta parece volver demasiado rápido, ¿hay algo que deba hacer ''para que Java espere'' una respuesta completa?
¡No hagas eso!
Use el new RestCypherQueryEngine(restGraphDb.getRestAPI())
lugar, de lo contrario, todas sus consultas se ejecutarán en el cliente y cada acceso a la base de datos pasará por la red.
Y asegúrese de usar parámetros en sus consultas.
Utilizar:
QueryResult<Map<String, Object>> query(String statement, Map<String, Object> params)
de esta publicación: https://.com/a/6953423/1498109
Supongo que está intentando convertir un objeto / matriz en una cadena en System.out.println(result)