Spring的事务@Transactional事务抛出异常,数据没有回滚的问题。
原因:因为Spring拦截异常默认为RuntimeException异常,如果我们自己处理了异常,比如try{}catch{},会导致Spring的事务回滚失败。
解决方法1:抛出RuntimeException异常
适用场景:不需要返回给前台数据,会使程序报错
解决方法2:手动激活回滚操作
适用场景,因为catch中throw和return不能共存,我们要返回给页面数据时使用。
解决方法3:指定拦截异常的类型
使用场景:如果我们知道异常的类型,可以指定捕捉
这三种方案可以解决@Transactional事务回滚失效问题