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

Développement Web en Java Discussion :

Duplicate entry for key


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Par défaut Duplicate entry for key
    Bonjour à tous,

    Je me suis récemment mis au Java, et me retrouve face à un petit problème dont je n'arrive pas à trouver la solution :/.

    Alors voilà, j'ai des produits, qui appartiennent à des catégories ... Mais lorsque je veux ajouter un produit, je ne peux pas en ajouter un, si il possède le même prix/nom etc.. Je me retrouve face à une "MySQLIntegrityConstraintViolationException: Duplicate entry 'variable' for key 'content'"

    Je souhaitais voir cette erreur plus tard, mais là j'ai exactement la même chose lorsque j'update un produit !

    Y-a t'il une annotation spéciale à mettre (étant donné que le problème ne se fait pas au niveau de la catégorie du produit vu qu'il a un @ManyToOne) ?

    J'ai beau chercher, je ne sais pas comment faire :/

    Je vous présente ci-dessous la manière dont j’exécute un update:

    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
     
            @Override
            public boolean updateProduct(Product product) {
              EntityManager em = emf.createEntityManager();
              Product productx = em.find(Product.class, product.getId());
              try{
                em.getTransaction().begin();
                productx.setName(product.getName());
                productx.setContent(product.getContent()); 
                productx.setPrice(product.getPrice());
                productx.setCategory(product.getCategory()); 
                em.getTransaction().commit();
              } finally {
                em.close();
                return false;
              }
            }
    Je vous remercie d'avance pour l'aide que vous pourriez m'apporter

  2. #2
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Déjà c'est bizare d'avoir un find et un update dans deux transactions différentes.

    Ensuite, pourquoi tu ne fais pas un merge ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Par défaut
    Bonjour, et merci pour ta réponse .

    Et bien justement, j'ai déjà essayé avec un merge, de cette façon, avec le même succès que précédement:
    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
     
    @Override
            public boolean updateProduct(Product product) {
              EntityManager em = emf.createEntityManager();
              Product productx = em.find(Product.class, product.getId());
              try{
                em.getTransaction().begin();
                productx.setName(product.getName());
                productx.setContent(product.getContent()); 
                productx.setPrice(product.getPrice());
                productx.setCategory(product.getCategory());
                em.merge(productx);
                em.getTransaction().commit();
              } finally {
                em.close();
                return false;
              }
            }
    Autrement, comme je l'ai dit, je débute un peu en java, donc je suis encore loin d'avoir tout compris ^^.

    Mais ça me paraissait logique de récupérer un "produit spécifique" avec find, et ensuite de le mettre à jour ... Je fais certainement mal ! ^^

  4. #4
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Qu'est ce qui te fait penser que ça ne marche pas ? Tu as une exception ? une trace à nous montrer ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 108
    Par défaut
    Voilà ce que ça me donne:

    Les deux causes mères:
    org.hibernate.exception.ConstraintViolationException: could not insert: [com.argetprod.supcommerce.entity.Product]
    com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry 'Test' for key 'name'

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    ah mais je suis con, ça serait pas tout simplement un update que tu veux faire ?
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

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

Discussions similaires

  1. ERROR : Duplicate entry '' for key 2
    Par Estragon007 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/07/2013, 21h26
  2. [MySQL] UPDATE: ERROR DUPLICATE ENTRY FOR KEY PRIMARY
    Par Blackcocktail dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/12/2011, 15h07
  3. Réponses: 3
    Dernier message: 02/06/2011, 16h47
  4. Réponses: 7
    Dernier message: 29/11/2010, 17h34
  5. duplicate entry for key 'primary'
    Par mariek dans le forum Requêtes
    Réponses: 4
    Dernier message: 12/09/2009, 16h43

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