1

組み込みの 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 + " : ?")

    }
  }
4

0 に答える 0