在spring中使用注解@Transitional可以添加事物管理,但是很多时候,似乎注解失效即发生了异常,却没有回滚了。这里列举一下失效的几种情况
- 数据库引擎不支持,mysql需要InnoDB
- 方法必须是public的
- 方法必须是被其他类调用
- @Transitional默认是捕获运行时异常(继承RuntimeException)才回滚,所以如果想要捕获所有异常都回滚,需要在@Transitional后面加上(rollbackFor=Exception.class)
- 需要抛出异常,才会回滚,如果你已经自己把异常捕获了,但是没有继续往外抛,那么也是不会回滚的
网友评论