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 :

JPA Manager Spring - Problème duplicate entry avec opération cascade


Sujet :

JPA Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 56
    Points : 34
    Points
    34
    Par défaut JPA Manager Spring - Problème duplicate entry avec opération cascade
    Bonjour,

    J'ai un problème de duplicate entry pour des insertions en cascades.

    Comme schéma j'ai des personnes qui ont plusieurs numéros de téléphone, par contre ces numéros de téléphones peuvent être partagés, soit identique entre quelques personnes.

    Donc lors de mon insertion j'insère "à la chaine" des personnes avec leur(s) numéro(s) de téléphone. Et le problème que j'ai, arrive, quand pour une personne, je viens d'insérer un numéro identique à la personne qui suit (dans l'ordre d'insertion). Alors que avant d'insérer un nouveau numéro je vérifie bien que celui-ci n'existe pas.

    En regardant mes LOG, il semble que l'opération de cascade (en autre la persistance du numéro de téléphone) soit bien en effet non terminée quand la recherche du numéro pour la personne suivante arrive. A savoir que mon entityManager est dfinit ainsi
    @PersistenceContext(type = PersistenceContextType.TRANSACTION)
    private EntityManager entityManager;

    En gros c'est comme si la transaction en cours n'avait pas fini ses opérations de cascade quand la seconde est lancée. Pour cela je ne comprend pas car j'ai fais uniquement une boucle en insertion sur la liste des personne et seul ma méthode qui insert une personne à la fois est transactionnelle et selon la façon dont tout cela est défini je ne devrais pas avoir de transaction concurrente...


    Autrement quelqu'un aurait une idée pour résoudre ce problème ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    La solution est de faire un persist de l'objet en relation avant de persister l'objet principal, mais cela provoque des requêtes en plus, car on persiste le téléphone, ensuite on persiste la personne et la requête de cascade qui effectue la relation et qui maintient la corrélation des infos dans les entity, tandis qu'avant je supprimais une requête de persistance, celle du téléphone, qui était faite durant l'opération de cascade.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Quelqu'un aurait une idée pour éviter un trop grand nombre de requêtes ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/10/2009, 11h02
  2. Erreur bizarre "Duplicate entry" avec un int(11)
    Par Cedricweb dans le forum MySQL
    Réponses: 4
    Dernier message: 11/03/2009, 11h49
  3. Réponses: 2
    Dernier message: 11/07/2008, 14h44
  4. [MySQL] duplicate entry avec unique
    Par djoumusic dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 07/07/2008, 20h03
  5. problème duplicate entry
    Par beberd dans le forum Requêtes
    Réponses: 6
    Dernier message: 21/03/2007, 16h54

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