【发布时间】:2015-03-28 16:19:59
【问题描述】:
我正在使用带有 java 的 neo4j 2.1.7。
try(Transaction transaction = this.graphDatabaseService.beginTx())
{
Node user = this.graphDatabaseService.createNode();
user.setProperty("userId", userId);
transaction.failure();
}
所以我正在获取 GraphDatabaseService 的对象并创建一个新事务并将其标记为回滚。根据他们的 javadocs:
无效失败()
将此事务标记为失败,这意味着它将 调用 close() 时无条件回滚。一旦这 方法已被调用,不管success()是否被调用 之后 -- 事务仍将回滚。
但我看到无论如何都会创建节点。我试过throwing an exception。我也试过not calling transaction.success()。我仍然看到更改被提交而不是回滚。我不确定这种行为,希望得到解释。谢谢。
如果您必须知道,我正在尝试使用嵌套事务构建一个 commit() 函数,这样如果内部事务中的任何操作失败,则父事务也必须失败。然而,在这个过程中,我发现无论我做什么,事务都会被提交。
更新 1:
neo4j 的嵌入式版本运行良好。其余版本造成了这个麻烦。我正在使用这个包休息:
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-rest-graphdb</artifactId>
<version>2.0.1</version>
</dependency>
【问题讨论】:
标签: java transactions neo4j