2013-05-13 140 views
0

我有公司已登录并创建了与其他公司的债务关系。 我想打一个查询询问谁创造的关系(得到的关系第一节点)Cypher循环结果

我不喜欢这样

ExecutionEngine engine = new ExecutionEngine(graphDB); 
ExecutionResult result = engine.execute("start n=node(*) match n-[r]->() return distinct n.name"); 

当我做

out.println("Companies that have entered data "+result.toString()); 

我得到我想要什么,但现在我需要以正确的方式为我的servlet显示它。我目前这样做

Iterator<Node> list_companies = result.columnAs("n.name"); 
while(list_companies.hasNext()){ 
    Node compan = list_companies.next(); 
    out.println(compan.getId()+" "+compan.getProperty("name")); 
} 

而我没有得到任何结果。我的节点有属性名称,税号和电子邮件。 我不认为正确的方式做到这一点是通过删除解析

result.toString() 

“| + --- ||” ......

+0

确保不要执行'out.println(“已输入数据的公司”+ result.toString()); '在迭代之前,否则你会吃掉懒惰的数据流并且没有数据。 – 2013-05-14 00:15:38

+0

我评论说,没有显示......也许是关于通过结果循环的方式。 – 2013-05-14 01:45:29

回答

3

如果您然后返回n.name你”会返回有一个属性,而不是一个节点:

Iterator<Node> list_companies = result.columnAs("n.name"); 

应该最有可能是:

Iterator<String> list_companies = result.columnAs("n.name"); 
while(list_companies.hasNext()){ 
    String compan = list_companies.next(); 
    out.println(compan); 
} 

如果你想在ID的d名称属性,那么你可以返回不同的n,然后它将是一个节点迭代器,如你的例子。

+0

它的工作原理!谢谢 ! – 2013-05-14 02:09:03