組み込みの Neo4j データベースを Scala + Play フレームワーク プロジェクトに実装しました。データベースからノードを読み取っている間、ノードのプロパティを正しく取得できません。ページを更新するたびに、一意の ID を持つ 2 つのノードを追加しています。そのようなIDを持つノードがすでにある場合、それらを追加しません。しかし、読み取り中にノードにプロパティがなく、null が取得されることがあります。
デバッグメソッドは次のようなものを返しています:
[debug] application - Node[0] : ?
[debug] application - Node[3] : ?
[debug] application - Node[4] : ?
[debug] application - Node[5] : ?
[debug] application - Node[6] : ?
[debug] application - Node[7] : 786432765
[debug] application - Node[8] : 567987654
別の時間:
[debug] application - Node[0] : ?
[debug] application - Node[3] : ?
[debug] application - Node[4] : ?
[debug] application - Node[5] : 786432765
[debug] application - Node[6] : 567987654
[debug] application - Node[7] : ?
[debug] application - Node[8] : ?
ここにいくつかのコードがあります:
def addNode(node: MyNode) {
var isUnique = true
val foundUser : Node = nodeIndex.get("phone", node.phone).getSingle()
if(foundUser != null) {
Logger.info("FOUND NODE with phone " + node.phone + ": " + foundUser)
isUnique = false
} else {
Logger.info("THERE IS NO NODE WITH PHONE " + node.phone)
}
if (isUnique) {
Logger.info("Node: " + node.phone + " is being added")
val tx : Transaction = graph.beginTx
try {
val newnode: Node = graph.createNode()
newnode.setProperty("phone", node.phone)
nodeIndex.add(newnode, "phone", node.phone)
} catch {
case e : Exception => {
tx.failure()
Logger.error(e.getMessage())
}
}
tx.success()
} else {
Logger.info("Node: " + node.phone + " ALREADY EXISTS")
}
}
def debug() {
Logger.debug("Node of " + graph);
val it = GlobalGraphOperations.at(graph).getAllNodes().iterator()
while(it.hasNext()) {
val node : Node = it.next()
if(node.hasProperty("phone"))
Logger.debug(node + " : " + node.getProperty("phone"))
else
Logger.debug(node + " : ?")
}
}