我有一个名为add()
的服务方法,注明了@Transactional
。
我调用它但是当在相应的DAO方法中发生ConstraintViolationException时,即使我指定不执行,它也会回滚事务。
我希望抓住ConstraintViolationException
,而不是NotFoundException
检查异常将被抛出。
@Override
@Transactional(noRollbackFor = ConstraintViolationException.class)
public User add(User user) throws NotFoundException {
try {
result = userDao.add(user);
} catch (RuntimeException e) {
throw new NotFoundException("Couldn't find group");
}
}
有没有办法在没有事务回滚的情况下捕获ConstraintViolationException
?
我使用的是Spring 3.1.1和hibernate 3.6。
答案 0 :(得分:4)
add()
方法周围的事务拦截器尝试提交事务时发生。由于它无法提交,显然,事务是回滚的。它不能做任何其他事情。