我正在尝试使用java api为Neo4j中的节点设置属性。 目前我正在做如下:
tx.begin();
Node node = db.findNode(label,key,value);
node.setProperty("k",11);
tx.success();
当我再次启动该过程并尝试检索此密钥或查看该特定节点中的值时,我看不到该密钥存在。怎么从这个开始?
答案 0 :(得分:3)
Transaction.success只有标记交易成功。在调用Transaction.close()之前,事务实际上没有提交。
Transaction JavaDocs声明如下:
这是Neo4j中程序化事务的习惯用法 从java 7开始:
try ( Transaction tx = graphDb.beginTx() ) { // operations on the graph // ... tx.success(); }
该习语使用try-with-resources语句来确保在语句退出时自动调用tx.close()
(即使由于异常)。您的交易代码也应该遵循。
例如:
try (Transaction tx = db.beginTx()) {
Node node = db.findNode(label, key, value);
node.setProperty("k", 11);
tx.success();
}