SpringData Jpa et encapsulation des DataAccessException
Bonjour,
J'ai une classe de service Spring qui utilise des repositories développés à l'aide de SpringData JPA (implémentation Hibernate).
Voici un bout de code de ma classe de service :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
@Service
public class TourneeServiceImpl implements TourneeService {
@Autowired
private TourneeRepository tourneeRepository;
...
@Override
@Transactional(rollbackFor = {ServiceException.class,DataIntegrityViolationException.class})
public void modifierTournee(Long _tourneeId, String _intitule, Integer _intervalleGPS, String _commentaire) throws ServiceException,DataIntegrityViolationException {
Tournee tournee;
// Recherche de la tournee
tournee = tourneeRepository.findOne(_tourneeId);
if (tournee == null)
throw new ServiceException("La tournée n'existe pas.");
tournee.setIntitule(_intitule);
tournee.setIntervalleGPS(_intervalleGPS);
tournee.setCommentaire(_commentaire);
}// La modification est effective en BD lors du commit de la transaction |
La méthode modifierTournee fonctionne bien. Mon problème est que je souhaiterais intercepter la levée de l'exception DataIntegrityViolationException dans ma méthode afin de lancer une ServiceException . Ainsi, tout client de mon service n'interceptera que des ServiceException et les exceptions de la couche Dao ne seront pas nécessairement visibles au niveau de la couche Client.
Si quelqu'un peut me dire si cela est possible!
Merci d'avance