我想更新数据库中的现有节点。 我可以正确地创建节点,但无法更新现有节点。
try (Transaction tx = template.getGraphDatabaseService().beginTx()) {
Node node = repository.findNodeUsingId("n1");
if(node != null){
//Modify some properties using setProperty
node.setProperty("name","P");
//How should I do to save the modified node object?
}else{
//Create the node
//This part works fine
node = template.createNode();
node.setProperty("name", "T");
}
tx.success();
}
答案 0 :(得分:1)
您不必保存修改后的对象。
调用setProperty后,您的节点属性已在当前事务中设置。
此处您唯一缺少的是关闭交易,请检查此问题(来自Neo4j Javadoc)关于Transaction.close()
:
根据是否,提交或标记此事务以进行回滚 之前已调用success()或failure()。所有 从内部执行的操作返回的ResourceIterables 此交易将通过此方法自动关闭。这个 方法来自AutoCloseable,以便Transaction可以参与 在try-with-resource语句中。它不会抛出任何声明 例外。调用此方法(在进入时不需要) try-with-resource statement)或finish()具有完全相同的效果。