Bonjour,
J'aimerais savoir comment gérer au mieux les erreurs provenant de la BD. J'utilise JPA pour les interactions avec la BD.
En effet, lorsque je veux supprimer une ligne ayant une FK sur une autre table, j'obtiens une erreur de contrainte du genre, que j'aimerais intercepter et ainsi mettre un message à l'utilisateur :
Dans mon code, j'ai bien un bloc try-catch mais rien ne s'y passe, c'est comme si je ne voulais pas intercepter le bon type d'erreurCaused by: com.microsoft.sqlserver.jdbc.SQLServerException: L'instruction DELETE est en conflit avec la contrainte REFERENCE "FK8B2553321AA62CC". Le conflit s'est produit dans la base de données "TEST_DB", table "dbo.GL_DEPARTEMENT", column 'GL_SOCIETE_ID'.
Voici la méthode de suppression de mon ManagedBean :
Et la méthode de mon service :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public void supprimerSociete() { try { m_societeService.deleteSociete(getSelectedSociete()); FacesContext.getCurrentInstance().addMessage( null, Messages.getMessage("LaSocieteAEteSupprimeeAvecSucces", FacesMessage.SEVERITY_INFO, null)); } catch (DAOException e) { FacesContext.getCurrentInstance().addMessage( null, Messages.getMessage("ImpossibleDeSupprimerLaSociete", FacesMessage.SEVERITY_INFO, null)); } }
De plus, j'aimerais, si possible, pouvoir "identifier" l'erreur et ainsi informer au mieux l'utilisateur pour qu'il sache la raison du problème (lien avec une FK, .....)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @Override public void deleteSociete(Societe societe) throws DAOException { try { m_em.remove(m_em.merge(societe)); } catch (Exception e) { throw new DAOException("fddc"); } }
Qqun saurait-il me renseigner ?
Merci d'avance pour votre aide
Partager