使用Spring数据更新Node对象

时间:2015-11-18 20:44:10

标签: neo4j spring-data-neo4j

我想更新数据库中的现有节点。 我可以正确地创建节点,但无法更新现有节点。

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();
}

1 个答案:

答案 0 :(得分:1)

您不必保存修改后的对象。

调用setProperty后,您的节点属性已在当前事务中设置。

此处您唯一缺少的是关闭交易,请检查此问题(来自Neo4j Javadoc)关于Transaction.close()

  

根据是否,提交或标记此事务以进行回滚   之前已调用success()或failure()。所有   从内部执行的操作返回的ResourceIterables   此交易将通过此方法自动关闭。这个   方法来自AutoCloseable,以便Transaction可以参与   在try-with-resource语句中。它不会抛出任何声明   例外。调用此方法(在进入时不需要)   try-with-resource statement)或finish()具有完全相同的效果。