La cause immédiate du problème est Recherche2.rechercheCRRNorm(Recherche2.java:1523) - voir trace de l'exception. Il s'agit apparemment d'une association many-to-one. De plus on voit que l'identificateur qui pose problème est 1
Cela permet-il de cerner le problème?
Quote:
Aussi, je met dans la même transaction des suppressions, des ajouts et encore des suppressions, ça marchait pas trop, alors j'ai mis des flush() par acquis de conscience, et ça passe
Dans de telles conditions il est parfois nécessaires (mon expérience, pas une règle générale) d'utiliser flush (spécialement après les suppressions).
Quote:
est-ce que je dois utiliser une transaction par opération ?
Ce n'est certainement pas la méthode à conseiller - la transaction doit garantir que soit tout se passe bien, soit rien ne se passe. Si tu change cela, tu risques de laisser un désordre innommable dans la BD.
Même si j'ai dit que c'était un problème connu, il n'est pas facile à résoudre concrètement lorsqu'on peu d'info sur le contexte comme c'est mon cas pour l'instant.
Te donner une explication générale ne serait sans doute pas non plus très utile.
Mon conseil pour l'immédiat:
1) essaie de reproduire le problème dans un contexte plus simple
ou
2) Debogue jusqu'au niveau d'Hibernate (sportif, mais je l'ai souvent fait pour comprendre ce qui se passe) - tu verras alors quelle classe pose le problème...
3) envoie + ou - tout ce que tu as...
Je conseillerais 1, mais je ne sais pas si c'est facile...
Erik