J'utilise Hibernate dans une application Java2E. A partir d'un fichier XML contenant "n" enregistrements, des lignes sont insérées en base.
La lecture du fichier est réalisé via un parseur SAX et les enregistrements sont traités l'un après l'autre de manière séquentielle, jusqu'à là pas de problème.
Je tente de paralléliser les traitements afin de pouvoir traiter "simultanément" plusieurs enregistrements, chacun dans un thread propre. Pour cela, la session Hibernate est attaché au thread via un ThreadLocal. De manière aléatoire, l'exception suivante est produite lors de l'appel à Session.flush() :
Je ne vois pas d'où vient l'exception car lorsque je la catche, je parcours le cache Hibernate (la collection renvoyée par Session.getStatistics().getEntityKeys()), et je ne détecte aucun doublon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ... Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update ... Caused by: java.sql.BatchUpdateException: ORA-00001: violation de contrainte unique (XX.YY)
Quelqu'un aurait-il une idée sur ce qui se passe ? Merci pour vos réponses
Partager