Transactional对Exception的处理分为checked异常和unchecked异常。
继承自Exception的异常为checked异常,捕获到此类异常时不会回滚,待方法结束后会自动提交事务。
继承自Error或者RuntimeException的异常为unchecked异常,捕获到后会回滚事务
所以解决办法有两个,一个是将Exception转为RuntimeException,第二个使用@Transactional(rollbackFor = Exception.class)