执行引擎不打印结果

时间:2014-05-01 08:10:29

标签: java neo4j

我有一个简单的Query方法来运行cypher查询,如下所示。如果我在Web控制台中运行EXACT相同的查询(是的,相同的数据库实例,正确的路径),我在控制台中得到non-empty iterator。我不应该1)没有得到那个消息,2)得到我在数据库中看到的结果?

此类具有将数据添加到数据库的其他方法,并且该功能运行良好。此查询方法无效...

类别:

import org.neo4j.cypher.javacompat.ExecutionEngine;
import org.neo4j.cypher.javacompat.ExecutionResult;
import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.helpers.collection.IteratorUtil;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.sql.*;

public class NeoProcessor {

    //private GraphDatabaseService handle;
    private static final String DB_PATH = "/usr/local/Cellar/neo4j/2.0.1/libexec/data/new_graph.db";
    static GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );


    public NeoProcessor()
    {
    }


    public void myQuery(String cypherText) 
    {
        //System.out.println("executing the above query");
        cypherText = "MATCH (n:Phone{id:'you'}) MATCH n-[r:calling]->m WHERE n<>m RETURN n, r, m";

        ExecutionEngine engine = new ExecutionEngine( this.graphDb );

        ExecutionResult result;
        try ( Transaction ignored = graphDb.beginTx() )
        {
            result = engine.execute( cypherText + ";");
            System.out.println(result);

            ignored.success();
        }

    }
}

下面的图片展示了查询如何从数据库中获得结果:

enter image description here

3 个答案:

答案 0 :(得分:1)

要使用结果,您需要使用迭代器。如果您只想要字符串表示,请使用ExecutionResult.dumpToString()。请注意,此方法会耗尽迭代器。

答案 1 :(得分:1)

你应该打电话:

System.out.println(result.dumpToString)

哪个会为你美化它。当然,你的比赛总是有可能没有结果。你也会在最后一个区块中关闭交易,尽管这在这里并不重要。

编辑:再看一下,你的Cypher查询错误地形成了,它应该是

MATCH (n:Phone) - [r:calling] -> (m) 
WHERE n.id = `you' 
RETURN n, r, m

答案 2 :(得分:1)

result = engine.execute(cypherText + ";");
System.out.println(result.dumpToString());
  

指定人:   http://api.neo4j.org/2.0.3/org/neo4j/cypher/javacompat/ExecutionResult.html#dumpToString()