无法在spring hibernate @transactional方法中处理异常

时间:2015-12-07 10:10:44

标签: java spring hibernate orm spring-transactions

Transactional注释的情况下,我无法在DAO类方法中处理异常。

服务类方法:

 public String saveEmp(Employee emp) {
    return empDao.saveEmp(emp);
 }

DAO类方法:

   public String saveEmp(Employee emp) {
      try{
         return getHibernateTemplate.save(emp);
      }catch(DataIntegrityViolationException de){
         if(nameExist(emp)){
            throw new NameExistException();
         }
      }catch(Exception e){
         throw new Exception(e.getstacktrace());
      }
   }

1 个答案:

答案 0 :(得分:0)

修改服务类方法,如下所示

 @Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackfor={Throwable.class})
 public String saveEmp(Employee emp) {
    return empDao.saveEmp(emp);
 }

现在,如果发生任何异常,Spring框架将负责回滚操作。我更喜欢将@Transactional注释放在服务层而不是DAO层方法。