无法处理 spring hibernate @transactional 方法中的异常
Not able to handle exception in spring hibernate @transactional method
在 Transactional
注释的情况下,我无法在 DAO class 方法中处理异常。
服务Class方法:
public String saveEmp(Employee emp) {
return empDao.saveEmp(emp);
}
DAO Class 方法:
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());
}
}
像这样修改您的服务class方法
@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackfor={Throwable.class})
public String saveEmp(Employee emp) {
return empDao.saveEmp(emp);
}
现在,如果发生任何异常 Spring 框架将负责回滚 operation.I 更喜欢将 @Transactional 注释放在服务层而不是 DAO 层方法上。
在 Transactional
注释的情况下,我无法在 DAO class 方法中处理异常。
服务Class方法:
public String saveEmp(Employee emp) {
return empDao.saveEmp(emp);
}
DAO Class 方法:
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());
}
}
像这样修改您的服务class方法
@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackfor={Throwable.class})
public String saveEmp(Employee emp) {
return empDao.saveEmp(emp);
}
现在,如果发生任何异常 Spring 框架将负责回滚 operation.I 更喜欢将 @Transactional 注释放在服务层而不是 DAO 层方法上。