2016-12-11 12 views
1

Javaから呼び出されたCypher(Neo4J)クエリの結果を実行して印刷したいが、その結果は複数のノードタイプで構成されている - たとえばRETURN u, gです。すべてのタイプの結果にを表示するには?Java Neo4JのCypherクエリの合成結果を正しく反復する方法

私は、それぞれ次のようg秒またはu秒間NullPointerExceptionrow.get("u");またはrow.get("g");が、両方の結果を呼び出してみました。

String q = "MATCH (u:user) OPTIONAL MATCH (u)-[:OWNS]-(g:group) RETURN u, g"; 
Result res = DB.execute(q); 
while (res.hasNext()) { 
    Map<String, Object> row = res.next(); 
    Node n = (Node) row.get("u"); 
    System.out.println(n.getAllProperties()); 
} 

row.get("");を使用して異なる種類の結果ノードを使用する方法を教えてください。

答えて

1

最後に、私は結果がのユーザーとそのグループのペアを返すことを認識しました。これは存在しないかもしれません。すなわち:

+------+-------+ 
| user | group | 
+------+-------+ 
| u1 | g1 | 
| u1 | g2 | 
| u2 | null | 
| u3 | g3 | 
+------+-------+ 

結果からのノードのペアのための溶液は、次にある:

while (res.hasNext()) { 
    Map<String, Object> row = res.next(); 
    Node n = (Node) row.get("u"); 
    if (row.get("g") != null) { //that was causing the NullPointerException 
     Node g = (Node) row.get("g"); 
     System.out.println(n.getAllProperties() + ": " + g.getAllProperties()); 
    } else System.out.println(n.getAllProperties()); 
} 
関連する問題