2017-01-09 10 views
3

В какой-то момент мне не хватает информации о встроенном neo4j 3.0. После создания узла задайте некоторые свойства и отметим успешную транзакцию. Затем я снова открываю БД, но в нем нет узлов! Что мне здесь не хватает? Документация neo4j довольно бедна.neo4j 3.0 встроенный - нет узлов

 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

Я думаю, вам нужно вызвать 'tx.close()' или 'tx.finish()' после 'tx.success()' для закрытия транзакции. Можете ли вы попробовать это? –

+0

Правильно! Спасибо К.Е.! Как насчет отправки ответа? – scalapeno

+0

Perfect - Вы использовали 'tx.close()' или 'tx.finish()'? Скажи мне, тогда я напишу ответ. –

ответ

1

Сделка, что вы открыли должен быть закрыт с помощью команды tx.close() после установки сделки заявить успех. Я не знаю точного синтаксиса scala, но было бы неплохо положить полный блок в try/catch и, наконец, закрыть транзакцию в блоке finally. Вот документация для Java: https://neo4j.com/docs/java-reference/current/javadocs/org/neo4j/graphdb/Transaction.html