public void A()抛出ApplicationException{
.....//some logic here
doInsert(); //entity layer method that perform the insert operation
throw new ApplicationException(); // this is only for test
}
这是方法B():
A(); //this method is called n time in a loop but it doesn't matter
public ApplicationException() {
super();
}
}
显然,如果删除方法B()中的catch块,就不会出现这种行为。现在,我想知道是否有一种方法可以回滚我的事务,即使我捕捉到方法B()中的异常。谢谢!!!!
根据EJB3.1规范的第14.2.1节:
被检查的html" target="_blank">应用程序异常异常可以通过在bean的businessinterface、no-interface视图、home interface、component interface和web服务endpoint的方法的throws子句中列出来定义。未检查异常的应用程序异常通过使用ApplicationException元数据注释或在部署描述符中使用application-exception元素表示来定义为应用程序异常。
您的exception类扩展了exception,因此它是一个检查异常,因此忽略@ApplicationException
注释。如果希望在抛出此异常时回滚异常,则应该在捕获异常后使用ejbcontext.setrollbackonly
(也可以在抛出异常之前完成,但从catch块中完成可能是更好的样式,因为它强调“处理”异常)。或者,您可以将异常更改为扩展runtimeexception
,但您可能不想这样做,这取决于您对未检查异常的感觉。
我在Spring Boot应用程序中有一个Javers实现。Mongo4.4被用作数据库。从MongoDB4.4开始,您可以在事务中创建文档。 我在创建对象时模拟了一个异常。如预期的那样,对象没有在数据库中创建,但是一个新的快照被添加到jv_snapshots集合中。 控制器:
问题内容: 我有一个MySQL数据库,正在使用。 由于某些原因,我无法使事务正常运行。如果我打电话,它不会回滚。 示例代码: 结果是将另一行添加到myTable。谁能想到一个原因? 问题答案: 您使用的是myIsam还是innodb?据我所知,它仅适用于innodb
我使用MyBatis 3.4.5和Spring 4.1.6。我检查了抽象类GenericException(扩展Exception)和CustomException(扩展GenericException我在德克萨斯州为GenericException设置了默认回滚: 我不明白怎么回事。有关信息:我需要在TimerStatePushService中回滚事务,而不是在Service1中回滚事务。
在我的一般问题之后,我有一个使用Spring的特定问题,我想在下面每次执行DAO方法后回滚特定的测试方法。 添加和未能回滚插入 此外,在之前/之后获取连接并回滚也不会产生影响 我应该如何使用TestNG框架回滚单元测试?大多数答案使用JUnit的 我未能使用TestNG自动接线: 但是成功地使用了和include配置类includes jdbcTemplate/DataStource TestNG
我们有一个Spring事务回滚问题,其中回滚似乎不起作用 在用注释的服务层方法中,我调用三个不同的类来插入3条记录 中间插入从第四个表执行get以填充描述字段,但此get失败。我希望第一次插入会回滚,但它似乎没有发生 几点: 获取方法抛出运行时异常 我们使用和中定义的。Bean是在中创建的,它被导入到 在层 中没有 注释 我们已经使用了