Un objet différent avec la même valeur d’identifiant était déjà associé à la session : 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, de l’entité : XXX
J’ai rencontré cette erreur deux fois au total, et je n’ai jamais trouvé de bonne solution, et cette erreur s’est produite
La raison est probablement bien connue, car dans Hibernate, il y a deux logos identiques dans la même session
Cependant, s’il s’agit d’une entité différente, cette erreur sera signalée lors de l’exécution de l’opération saveOrUpdate(object).
Hehe, peut-être que tu diras, il n’y a pas de différence entre ce que tu dis et ce que tu ne dis pas, j’admets, hehe, je ne connais pas les détails
Pourquoi cette erreur s’est produite, sinon elle n’aurait pas été résolue avant longtemps, maintenant, donnez-nous une erreur temporaire
La solution est de donner à des personnes comme moi, qui n’ont aucun moyen de trouver la cause profonde, un moyen de continuer à mettre en œuvre
(Bien sûr, c’est exact, mais cela ne commence pas par la cause) En fait, il est très simple de résoudre ce problème, il suffit d’effectuer l’opération session.clean()
Mais vous avez effectué l’opération saveOrUpdate(object) après l’opération de nettoyage, ce qui est possible
« Trouvé deux représentations de la même collection », j’ai cherché beaucoup d’informations.
Il n’y a pas de bonne explication, ce que cet article aide le plus
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Enfin, cela peut être résolu par la méthode session.refresh(object), notez que lorsque l’objet n’est pas
Si c’est un objet contenant des données dans la base de données, vous ne pouvez pas utiliser le facteur session.refresh(object)
Pour rafraîchissement, il faut récupérer l’objet depuis la session d’hibernation, s’il n’y a pas d’objet dans la session
S’il y a cet objet, une erreur sera signalée, il faut donc juger avant d’utiliser saveOrUpdate(object).
Casse-le
Bien sûr, la solution la plus simple à ce problème est d’utiliser le merge() fourni avec Hibernate.
méthode. Cependant, j’ai toujours l’impression que lorsque je rencontre des problèmes, j’utilise la méthode très utile fournie avec ce logiciel
(comparé à saveOrUpdate(), save(), update()) est très désagréable. Plus tard, j’ai aussi constaté que cette erreur apparaît souvent dans la correspondance un vers plusieurs et la correspondance multi-à-plusieurs, merci d’être ici
Soyez prudent lorsque vous utilisez la correspondance un à plusieurs et à plusieurs Dépannage et gestion de Hibernate 1、un objet différent avec la même valeur d’identifiant était déjà associé à la session。 Raison de l’erreur : En hibernation, il y a deux identités identiques dans la même session, mais des entités différentes. Solution de contournement 1 : session.clean() PS : Si vous effectuez des opérations pour modifier l’état des données comme saveOrUpdate(object) après l’opération nettoyante, vous pouvez recevoir une exception « Deux représentations trouvées de la même collection ». Solution de contournement 2 : session.refresh(object) PS : Lorsque l’objet n’est pas un objet contenant des données dans la base de données, vous ne pouvez pas utiliser session.refresh(object) car la méthode consiste à récupérer l’objet depuis la session d’hibernation ; s’il n’y a pas d’objet dans la session, une erreur sera signalée, donc vous devez juger avant d’utiliser saveOrUpdate(object). Solution 3 : session.merge(object) PS : La méthode de Hibernate est recommandée. 2、Trouvé deux représentations d’une même collection Cause de l’erreur : Voir 1. Solution de contournement : session.merge(object) Les deux anomalies ci-dessus apparaissent souvent dans le mappage un-à-plusieurs et le mappage multi-à-plusieurs
Causes d’erreur :
Mythe :Vous ne pouvez pas créer un nouvel objet utilisateur puis obtenir les informations utilisateur basées sur l’identifiant utilisateur et les attribuer à cet objet, de sorte qu’un autre objet avec la même valeur d’identifiant soit déjà associé à l’erreur de session !!
|