我在tomcat服务器中使用具有多个数据源配置的JTA原子事务。有时我会遇到以下异常:
JTA事务意外回滚(可能是由于超时);嵌套的异常是javax。交易回滚异常:事务被设置为仅回滚
出现这种异常的原因是什么?
很多时候,它可能是由DNS问题引起的。尝试在tomcat和数据库中禁用反向DNS查找(例如,mysql预先配置了反向DNS查找,这会导致很多随机错误)。DNS使用UDP协议,因此如果网络拥挤,它可能会随机失败。
它也可能是由“大-慢-查询”引起的。
还有许多其他类型的问题可能会导致超时。您可能需要通过网络扫描程序(tcpdump、wireshark等)知道确切的原因。
当异常(NullPointerException)发生时,事务不回滚,并且Customer实体被持久化,但是当我用 事务正在回滚,但我不明白为什么,NullPointerException扩展了RuntimeException,文档说RuntimeException导致回滚。
这很好,但并不总是在代码中抛出运行时异常。因此,我挖掘并发现如下所示的rollbackFor; 现在,我必须更改所有代码,以使用RollBackfor更改@Transactional。但是还有其他方法可以将所有@transaction advice属性更改为rollbackFor=exception.class吗?
非常感谢
我正在使用Spring JpaRepository在我的一个应用程序屏幕中实现CRUD。作为其中的一部分,我正在开发一个功能,用户可以保存所有汽车实体或没有(应该回滚)到数据库。我不确定如何使用Spring Boot、Spring Rest和Spring JPA实现此功能。 下面是我的源代码。 除此之外,我还得到了一个类似 请帮帮我。谢谢你。
问题内容: 如果在mysql命令列表中发生任何错误,是否可以自动回滚? 例如类似以下内容的东西: 现在,在执行我希望整个交易失败,因此我应该 不 看到值1在myTable的。但是不幸的是,即使事务有错误,该表也仍使用values1进行伪造。 任何想法,我如何使其回滚?(再次出现任何错误)? 编辑-从DDL更改为标准SQL 问题答案: 您可以使用13.6.7.2。DECLARE … HANDLER语
问题内容: 我在EJB3无状态会话Bean中使用CMT。另外,我还创建了自己的具有注释“ @ApplicationException(rollback = true)”的异常。 要回滚事务时是否必须使用“ context.setRollbackOnly()”? 我可以通过在bean的public方法内抛出异常来回滚事务吗? 如果是这样(对Q#2的回答是“是”),我是否必须通过在方法中声明异常来将异