我正在用java寫一個neo4j演示代碼。以下是我創建節點,索引它們並打印其屬性的代碼的一部分。neo4j:Java錯誤:找不到NodeImpl的屬性#0
String NODE_KEY = "UserID";
String NODE_PROPERTIES = "UserProperties";
createAndIndexUser(String userID){
Node node = graphDB.createNode();
node.setProperty(NODE_KEY, nodeID);
neo4jGraph.nodeIndex.add(node, NODE_KEY, userID);
return node;
}
for(int i=0 ; i<100 ; i++){
String userID = "userID_"+i;
Node node = createAndIndexUser(userID);
node.setProperty(NODE_PROPERTIES, strNodeProperties);
}
Iterable<Node> allNodes = GlobalGraphOperations.at(graphDB).getAllNodes();
for(Node n: allNodes){
System.out.println("n.getPropertyKeys: "+n.getPropertyKeys());
System.out.println(n.getProperty(NODE_KEY));
}
當我執行該代碼,第一的println輸出爲:
n.getPropertyKeys: []
而對於第二次的println我得到一個錯誤:
Exception in thread "main" org.neo4j.graphdb.NotFoundException: 'UserID' property not found for NodeImpl#0.
在哪裏,我是什麼做錯了?爲什麼它不打印n.getProperty(NODE_KEY)
上的所有PROPERTIES鍵?
是否有任何其他方式獲取所有節點並打印其屬性?
謝謝@KelseyRider。有效。但是,爲什麼創建虛擬節點?是否有可能避免它? – 2013-03-14 10:04:35
我認爲它是作爲「參考節點」自動創建的。您可以刪除它,但不能重新創建它。圍繞它的網絡有很多討論,例如http://stackoverflow.com/questions/7186832/recreate-reference-node-in-a-neo4j-database – Kricket 2013-03-14 10:24:55