Neo4J - Java:结果不完整

时间:2014-10-29 15:49:22

标签: java neo4j cypher

当我在java应用程序中尝试执行cypher查询时,我遇到了一个奇怪的问题。 result.dumpToString() - 方法显示正确的结果。 但是当我尝试迭代时,最后一个节点总是丢失(对于每个执行的查询):

for (Map<String, Object> row : result) {    
    System.out.println(((Node) row.get("A")));
    System.out.println(((Node) row.get("A")).getProperty("name").toString());           
}

第一个输出是正确的。我看到了结果的所有节点。 在第二个输出中,缺少一个节点,虽然我知道该节点有一个“名称” - 属性。

有人有想法吗? 谢谢

2 个答案:

答案 0 :(得分:2)

如果您错过了第二个输出,那么该属性的值可能是一个空白的字符串。这一行:

System.out.println(((Node) row.get("A")).getProperty("name").toString()); 

存在属性&#34; name&#34;如果是空白,则根本不打印(但换行)。

另外,你这样做的方式有点危险;请记住,通常节点可能会丢失,因此getProperty("name")可以返回null。这意味着当您在其上调用toString()时,您最终会得到NullPointerException。或许写下这个更好:

row.get("A").getProperty("name", "missing").toString();

那将会回归&#34;失踪&#34;如果财产遗失,或者:

Object propValue = row.get("A").getProperty("name");
if(propValue != null) 
    System.out.println(propValue.toString());
else System.out.println("Missing name property");

答案 1 :(得分:0)

解决了我的问题: 我在没有开始事务的情况下执行查询。 现在它有效。然而,这是一种奇怪的行为。

谢谢大家