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

NHibernate Discussion :

[NHIbernate] Savoir ce qui a déclenché l'erreur


Sujet :

NHibernate

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut [NHIbernate] Savoir ce qui a déclenché l'erreur
    Bonjour,

    Prenons le cas d'une table de 3 colonnes avec une clé primaire, un champ string et un champ integer. Le champ string requiert une valeur (not-null="true" dans la mapping). Le champ integer doit être être unique.

    Quand je veux insérer (ou mettre à jour, le problème est le même), si la chaîne est vide, NHibernate déclenche une exception. Si l'integer est en double, une exception également.

    Pour l'instant, je teste chaque valeur en fonction des contraintes avant de faire un save ou un update par diverses requêtes sur la base et/ou les valeurs utilisées. Je trouve ça fastidieux. Ca va encore pour le cas présent mais quand il y a beaucoup de contraintes, ça devient vite la pagaille.

    Je pensais utiliser directement des éléments de l'exception récupérée en faisant directement l'opération de création ou mise à jour sans contrôle préalable. Mais comment savoir quelle colonne a généré l'exception ainsi que le type de problème rencontré ?

    Faut-il parser le texte retour de l'exception pour essayer d'en déduire le problème rencontré, ou existe-il une solution plus simple que je n'aurais pas encore vue ?

    Papy !

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Tu peux utiliser :
    - Le framework de validation de nhibernate
    - Des intercepteurs

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Je viens de regarder un peu le framework Validator.
    Effectivement intéressant pour la majeure partie des éléments à vérifier, mais ... pour vérifier les contraintes d'unicité sur une colonne par exemple, ça ne sert pas. Maintenant, c'est vrai que que si je peux déjà valider facilement toutes les autres contraintes, c'est déjà pas mal. Je peux ensuite tenter un save ou un update et me dire que la seule erreur possible est une contrainte d'unicité.

    Pour les intercepteurs, c'est un peu le même "problème".

    Mais un grand merci pour m'avoir indiqué ce Validator qui va tout de même me rendre de grands services.

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Tout dépend de la façon dont tu dois concevoir ton mapping.
    Si c'est de la génération de code, c'est généralement assez facile de faire une validation en utilisant InotifyPropertyChanged.

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Comme je le disais plus haut, Le Validator va me rendre des services, à condition que ... je puisse personnaliser facilement les messages attachés à chaque validation.

    Malheureusement, j'ai beau cherché le moyen de faire ça, je ne trouve pas. Le seul truc que j'entrevois pour l'instant, c'est, à chaque validation, de faire un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (InvalideValue is Past)
       MessageBox("mon message perso");
    else if ...
    Du coup, ça enlève pas mal d'intérêt à la chose.

    Aurais-tu une astuce pour modifier le message renvoyé par défaut ?

    précision : J'utilise un système de traduction basé sur GetText avec une fonction qui prend en paramètre une chaîne de caractères dans la langue par défaut, et qui renvoie la traduction selon la langue choisie. J'ai donc une fonction Localisee("string to translate") utilisée chaque fois fois que je dois utiliser une chaîne de caractères. Et dans la définition de l'attribut pour une propriété, je ne peux pas utiliser de fonctions pour le paramètre Message du constructeur du "validateur".

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    peut être que tu devrais regarder

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 388
    Points : 2 999
    Points
    2 999
    Par défaut
    Citation Envoyé par B.AF Voir le message
    peut être que tu devrais regarder
    whaouh ... Beaucoup de lecture intéressante ... Je vais étudier tout ça.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Savoir qui a déclenché le trigger
    Par yodaime dans le forum PL/SQL
    Réponses: 10
    Dernier message: 16/06/2011, 16h25
  2. Réponses: 10
    Dernier message: 16/12/2008, 22h51
  3. [C#] Savoir quel bouton a déclenché l'évènement
    Par Amerok dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/12/2005, 15h19
  4. Réponses: 2
    Dernier message: 01/11/2005, 18h47
  5. [ STRUTS ][ ActionError ] SAvoir s'il y a une erreur
    Par LoulouFifi dans le forum Struts 1
    Réponses: 6
    Dernier message: 19/07/2004, 17h20

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