2015-12-07 2 views
0

Je ne suis pas en mesure de gérer l'exception dans la méthode de classe DAO dans le cas de l'annotation Transactional.Impossible de gérer l'exception au printemps Méthode hibernate @transactional

méthode classe de service:

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

méthode DAO Classe:

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()); 
     } 
    } 

Répondre

0

Modifier votre méthode classe de service comme celui-ci

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

Maintenant, si une exception survient, Spring framework prendra en charge l'opération d'annulation. Je préfère placer l'annotation @Transactional sur la couche de service et non sur la méthode de couche DAO.