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

JPA Java Discussion :

Problème avec la contrainte unique = true et nullable = true


Sujet :

JPA Java

  1. #1
    Membre habitué Avatar de JacNar6
    Homme Profil pro
    Développeur Java/Java EE/Android
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java/Java EE/Android

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 134
    Points
    134
    Par défaut Problème avec la contrainte unique = true et nullable = true
    Bonjour,

    J'ai une classe avec l'annotation si-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     @Column(unique = true)
        private String nif;
    Ce champs peut donc être null dans ma base de donnée, mais doit être unique quand il existe.

    Mon problème est que je n'arrive pas à insérer plus d'une ligne avec ce champs à null dans ma base de donnée . Tout se passe bien quand le champs n'est pas null; on dirait que pour eclipseLink (puisque c'est l'implémentation que j'utilise), null aussi doit être unique; Il n'ya cependant aucune erreur si j'agis directement sur ma base de donnée mysql. J'ai du mal à savoir ce qui ne va pas.

    Merci pour votre aide

  2. #2
    Membre habitué Avatar de JacNar6
    Homme Profil pro
    Développeur Java/Java EE/Android
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java/Java EE/Android

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 134
    Points
    134
    Par défaut
    Voici la cause de l'erreur dans le staketrace (claire à mon avis)!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '' for key 'NIF'
    Une fois cette exception générée, j’attribue une valeur à nif et hop! tout ce passe bien! une modification directe de ce champs dans ma base de données est bien prise en compte. Je ne pige vraiment rien!

  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,
    d'après cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Duplicate entry '' for key 'NIF'
    C'est le vide que t'essaies de nouveau d'insérer ou le null? c'est pas pareil tu dois t'en douter

  4. #4
    Expert éminent sénior
    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 : 45
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 807
    Points
    48 807
    Par défaut
    Tu as mis une String vide, ce qui n'est pas la même chose que null. (Sauf chez oracle database )

  5. #5
    Membre habitué Avatar de JacNar6
    Homme Profil pro
    Développeur Java/Java EE/Android
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java/Java EE/Android

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 134
    Points
    134
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C'est le vide que t'essaies de nouveau d'insérer ou le null? c'est pas pareil tu dois t'en douter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Tu as mis une String vide, ce qui n'est pas la même chose que null. (Sauf chez oracle database )
    Même sans vérifier dans mon code je suis certain que c'est la grosse bétise que je fais. Mille fois merci.

  6. #6
    Membre habitué Avatar de JacNar6
    Homme Profil pro
    Développeur Java/Java EE/Android
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java/Java EE/Android

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 134
    Points
    134
    Par défaut
    J'ai vérifié et tout marche bien. Pauvre de moi ! dire que j'ai planté sur une erreur aussi naïve. (...) Le corbeau jura! Mais un peu tard, qu'on ne l'y prendra plus...

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

Discussions similaires

  1. [2.x] problème avec mes contraintes d'intégrité
    Par Morfus dans le forum Symfony
    Réponses: 1
    Dernier message: 28/07/2013, 10h29
  2. Réponses: 4
    Dernier message: 28/11/2012, 15h10
  3. Réponses: 7
    Dernier message: 19/01/2012, 09h02
  4. Problème avec setundecorated(true)
    Par nico_somb dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/09/2006, 02h44
  5. [Conception] problème avec la contrainte d'integrité foreign key
    Par zana74 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/08/2006, 20h42

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