gpt4 book ai didi

java - neo4j事务不回滚

转载 作者:行者123 更新时间:2023-12-01 11:43:41 26 4
gpt4 key购买 nike

我正在使用 neo4j 2.1.7 和 java。

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

因此,我获取 GraphDatabaseService 的对象并创建一个新事务并将其标记为回滚。根据他们的 javadocs:

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.

但我看到无论如何都会创建节点。我尝试抛出异常。我还尝试过完全不调用 transaction.success() 。我仍然看到更改被提交并且没有回滚。我不确定这种行为,希望得到解释。谢谢。

如果您必须知道,我正在尝试使用嵌套事务构建一个 commit() 函数,这样如果内部事务中的任何操作失败,父事务也必须失败。然而,在这个过程中我发现无论我做什么,事务都会被提交。

更新1:

neo4j 的嵌入式版本运行良好。其余版本造成了这个问题。我正在使用这个包来休息:

<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-rest-graphdb</artifactId>
<version>2.0.1</version>
</dependency>

最佳答案

没有通过 REST 进行事务处理,至少对于旧版本而言是这样。

只有通过 HTTP 与新的 Cypher 端点进行交易。

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

关于java - neo4j事务不回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29319464/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com