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 :

Vérifier deux champs en même temps


Sujet :

Hibernate Java

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut Vérifier deux champs en même temps
    Bonjour,

    Comment indiquer à Hibernate que deux champs d'une table ne peuvent pas être null en même temps (cas de gestion d'une double référence) ?

    Merci d'avance.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Via Hibernate Validator c'est faisable en implémentant l'interface ConstraintValidator d'hibernate.
    Basiquement, une annotation spécifique:
    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
    17
    18
     
    @Target({TYPE, ANNOTATION_TYPE})
    @Retention(RUNTIME)
    @Constraint(validatedBy = NonNulSiAutreValeurValidator.class)
    @Documented
    public @interface NonNulSiAutreValeur {
     
        String champs1();
        String champs2();
     
        @Target({TYPE, ANNOTATION_TYPE})
        @Retention(RUNTIME)
        @Documented
        @interface List {
            NonNulSiAutreValeur [] value();
        }
     
    }
    Le validateur en lui-même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class NonNulSiAutreValeurValidator
        implements ConstraintValidator<NonNulSiAutreValeur , Object> {
     
          public boolean isValid(final Object value, final ConstraintValidatorContext ctx) {
                      // vérification du premier et du second champs
          }
     
    }

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Bonjour,
    Même si on peut le faire au niveau Hibernate, je conseille vivement de mettre cette contrainte au niveau du MPD pour garder une certaine cohérence, car il faut partir de l'hypothèse qu'une autre application accède un jour en modification sur la table et ne respecte pas la contrainte.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  4. #4
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Bonjour,
    Même si on peut le faire au niveau Hibernate, je conseille vivement de mettre cette contrainte au niveau du MPD pour garder une certaine cohérence, car il faut partir de l'hypothèse qu'une autre application accède un jour en modification sur la table et ne respecte pas la contrainte.
    MPD ?

    Quelle est la solution que tu préconises ?

    Merci.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  5. #5
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    Via Hibernate Validator c'est faisable en implémentant l'interface ConstraintValidator d'hibernate.
    Basiquement, une annotation spécifique:
    Merci beaucoup pour ton aide.

    Je vais essayer cela.

    +1

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  6. #6
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    MPD ?

    Quelle est la solution que tu préconises ?

    Merci.

    A+
    MPD = Modèle Physique De données, en gros je voulais dire qu'il faut centraliser la contrainte, de sorte que tout client de la base ayant des droits de modifications soit soumis à la contrainte.
    Cela n'empêche de la remonter également au niveau applicatif , afin d'éviter de se prendre un rejet de la base. Donc à 2 niveaux pour être mieux précis.
    Vous avez peut être hâte de réussir et il n'y a rien de mal à cela...
    mais la patience est aussi une vertu; l'échec vous l'enseignera certainement..."

  7. #7
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    MPD = Modèle Physique De données, en gros je voulais dire qu'il faut centraliser la contrainte, de sorte que tout client de la base ayant des droits de modifications soit soumis à la contrainte.
    Cela n'empêche de la remonter également au niveau applicatif , afin d'éviter de se prendre un rejet de la base. Donc à 2 niveaux pour être mieux précis.
    Un trigger donc...
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

Discussions similaires

  1. [AC-2010] Insertion dans deux champs en même temps
    Par birhu dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 07/07/2013, 11h08
  2. Réponses: 2
    Dernier message: 17/08/2011, 15h54
  3. remplir deux champ en même temps
    Par czezko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/04/2007, 19h44
  4. Tri sur deux champs en même temps
    Par Azharis dans le forum Access
    Réponses: 8
    Dernier message: 11/01/2006, 13h10
  5. Modifier deux champs en même temps!!!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 08/09/2005, 20h31

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