0

我有一些公司已经登录并与其他公司建立了债务关系。我想查询谁创建了关系(获取关系中的第一个节点)

我这样做

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

通过删除“ | +---||”...

4

1 回答 1

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 和 name 属性,那么您可以返回 distinct n ,然后它将是一个 Node 迭代器,如您的示例所示。

于 2013-05-14T02:02:22.747 回答