gpt4 book ai didi

java - 强制事务回滚而不遇到异常?

转载 作者:IT老高 更新时间:2023-10-28 13:04:55 25 4
gpt4 key购买 nike

我有一个方法可以做很多事情;其中包括许多插入和更新。

它是这样声明的:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
public int saveAll() {
//do stuff;
}

它完全按照预期工作,我对此没有任何问题。然而,在某些情况下,尽管没有异常,但我想强制回滚......目前,当我遇到正确的条件时,我正在强制异常,但这很丑陋,我不喜欢它。

我可以以某种方式主动调用回滚吗?

异常调用它...我想也许我也可以。

最佳答案

在 Spring Transactions 中,您使用 TransactionStatus.setRollbackOnly()

您在这里遇到的问题是您使用 @Transactional 来划分您的交易。这具有非侵入性的好处,但这也意味着如果您想手动与事务上下文交互,则不能。

如果您想严格控制事务状态,则必须使用程序化事务而不是声明性注释。这意味着使用 Spring 的 TransactionTemplate,或者直接使用它的 PlatformTransactionManager。请参阅 Spring 引用手册的第 9.6 节。

使用 TransactionTemplate,您提供了一个实现 TransactionCallback 的回调对象,并且此回调中的代码可以访问 TransactionStatus 对象。

它不如 @Transactional 好,但你可以更密切地控制你的 tx 状态。

关于java - 强制事务回滚而不遇到异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832375/

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