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 ?
Partager