IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

ConstraintViolationException non catchée


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut ConstraintViolationException non catchée
    Bonjour,

    J'aurai besoin de vos conseils.

    J'ai un formulaire me permettant d'insérer un patient en BDD. Un des champs du patient en unique en base. J'aimerai catcher la ConstraintViolationException d'hibernate au niveau de mon controller afin de pouvoir afficher le message d'erreur qui va bien à l'écran.

    Voici le code du controlleur Spring (J'utilise Spring MVC) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @ActionMapping(params = "action=add")
    protected void add(@ModelAttribute("patient") @Valid Patient patient, BindingResult result,
    	    ActionResponse response) {
        try {
    	patientService.add(patient);
        } catch (ConstraintViolationException ex) {
               result.reject("PatientRegistration.error");	
    	response.setRenderParameter("action", "edit");
        }
    }
    Mon service appel la couche DAO, dans la console eclipse j'ai bien l'exception qui est levé, mais elle n'est pas catché à ce niveau la.

    Une idée?

    Merci.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est qu'elle a déjà été attrapée et traitée en amont, dans ton controlleur, au sein de sa méthode add.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 110
    Par défaut
    Merci,

    Du coup, j'ai un peu mieu compris mon erreur, l'Exception levé est une java.persistence.PersistenceException dont la cause est une ConstraintViolationException.

    Mon but est de gérer l'erreur de façon à détecter si l'utilisateur essaye d'insérer un champ unique qui serait déjà en base. Mais la persistanceException est trop vague pour moi. J'aurai voulu récupérer le champ qui provoque le problème, pourtant quand je suis en debug, la "constraintName" de la ConstraintViolationException englobé dans la PersistenceException est à null, malgré que le message dit clairement que le champ 'iup' est unique.

    Auriez-vous une idée élégante pour gérer ceci?

    Merci,

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    iup est le nom du champ, pas le nom de la contrainte. Et ce message proviens directement de la couche JDBC. Si vous voulez un constraint name non null, il faudra donner des noms à vos contraintes d'intégrité sur la DB.

    Et prier que le driver vous le retourne.

Discussions similaires

  1. Question sur les exceptions catch / non catch
    Par MrEddy dans le forum Général Java
    Réponses: 2
    Dernier message: 21/10/2010, 12h25
  2. Exception non catché en mode release
    Par Troopers dans le forum C#
    Réponses: 3
    Dernier message: 06/07/2010, 10h09
  3. Événements non "catchés"
    Par francki17 dans le forum C++/CLI
    Réponses: 0
    Dernier message: 15/07/2008, 17h17
  4. [thread] Exception non catchée
    Par mammistegon dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 22/11/2004, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo