2017-01-09 5 views
3

Irgendwann muss ich über neo4j 3.0 embedded fehlen. Nach dem Erstellen eines Knotens müssen einige Eigenschaften festgelegt und die Transaktion als erfolgreich markiert werden. Ich öffne dann die DB, aber es gibt keine Knoten darin! Was fehlt mir hier? Die neo4j Dokumentation ist ziemlich schlecht.neo4j 3.0 embedded - keine Knoten

 val graph1 = { 
     val graphDb = new GraphDatabaseFactory() 
      .newEmbeddedDatabase(new File("/opt/neo4j/deviceGraphTest")) 
     val tx = graphDb.beginTx() 
     val node = graphDb.createNode() 
     node.setProperty("name", "kitchen island") 
     node.setProperty("bulbType", "incandescent") 
     tx.success() 
     graphDb.shutdown() 
     } 

     val graph2 = { 
     val graphDb2 = new GraphDatabaseFactory() 
      .newEmbeddedDatabase(new File("/opt/neo4j/deviceGraphTest")) 
     val tx2 = graphDb2.beginTx() 
     val allNodes = graphDb2.getAllNodes.iterator().toList 
     allNodes.foreach(node => { 
      printNode(node) 
     }) 
     } 
+1

Ich denke, Sie müssen 'tx.close()' oder 'tx.finish()' nach 'tx.success()', um die Transaktion zu schließen. Kannst du das versuchen? –

+0

Richtig! Danke K. E.! Wie wäre es mit einer Antwort? – scalapeno

+0

Perfekt - Haben Sie 'tx.close()' oder 'tx.finish()'? Sag mir, dann werde ich eine Antwort schreiben. –

Antwort

1

Die Transaktion, was Sie haben, hat geöffnet mit dem Befehl tx.close() nach dem Einstellen der Transaktion Erfolg zu erklären, geschlossen werden. Ich kenne die genaue Scala-Syntax nicht, aber es wäre gut, den vollständigen Block in einen try/catch zu setzen und schließlich die Transaktion im finally-Block zu schließen. Hier ist die Dokumentation für Java: