Neo4j 事务不回滚

neo4j transaction not rolling back

我正在使用带有 java 的 neo4j 2.1.7。

    try(Transaction transaction = this.graphDatabaseService.beginTx())
    {
        Node user = this.graphDatabaseService.createNode();
        user.setProperty("userId", userId);
        transaction.failure();
    }

所以我正在获取 GraphDatabaseService 的对象并创建一个新事务并将其标记为回滚。根据他们的java文档:

void failure()

Marks this transaction as failed, which means that it will unconditionally be rolled back when close() is called. Once this method has been invoked, it doesn't matter if success() is invoked afterwards -- the transaction will still be rolled back.

但我看到无论如何都会创建节点。我试过了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>

没有基于 REST 的事务,至少旧版本没有。

只有使用新的 Cypher 端点的 HTTP 交易。

该库已停产,我建议您使用例如JDBC 驱动程序或 Spring Data REST 附带的新实现。