规约原文
方法【%s】需要在Transactional注解指定rollbackFor或者在方法中显式的rollback
问题描述
https://github.com/alibaba/p3c/blob/master/p3c-pmd/src/main/resources/rulesets/java/ali-exception.xml
Positive example 2:
/**
* @author caikang
* @date 2017/04/07
*/
@Service
public class UserServiceImpl implements UserService {
@Override
@Transactional(rollbackFor = Exception.class)
public void save(User user) {
//some code
//db operation
}
}
以上例子中,save方法并不会产生Checked Exception,没必要加rollbackFor吧?
修改建议
当方法抛出Checked Exception时再触发
4条答案
按热度按时间ckx4rj1h1#
@yangguanbao
xzv2uavs2#
@gujin520 看下
ao218c7q3#
@gujin520
不太了解你们Spring
如果这时候我扔出一个OutOfMemoryError,会被rollbackFor拦截吗?
应该不会吧?
所以是不是Exception.class得改成Throwable.class比较合适?
pcrecxhr4#
根据Spring的@transactional文档,Error类型也会被捕获。
By default, a transaction will be rolling back on RuntimeException and Error but not on checked exceptions (business exceptions).
@gujin520 不太了解你们Spring 如果这时候我扔出一个OutOfMemoryError,会被rollbackFor拦截吗? 应该不会吧? 所以是不是Exception.class得改成Throwable.class比较合适?