Ein anderes Objekt mit demselben Identifikationswert war bereits mit der Sitzung verknüpft: 398fdbba-57B8-4D3D-B84B-4C0C0B497F02, von Entität: XXX
Ich bin diesen Fehler insgesamt zweimal aufgetreten und habe nie eine gute Lösung gefunden, und dieser Fehler ist aufgetreten
Der Grund dafür ist wahrscheinlich bekannt, denn im Winterschlaf gibt es zwei identische Logos in derselben Sitzung
Handelt es sich jedoch um eine andere Entität, wird dieser Fehler beim Ausführen der saveOrUpdate(object)-Operation gemeldet.
Hehe, vielleicht sagst du, es gibt keinen Unterschied zwischen dem, was du sagst und was du nicht sagst, ich gebe zu, hehe, ich kenne die Einzelheiten nicht
Warum dieser Fehler aufgetreten ist, sonst wäre er lange nicht gelöst worden, jetzt gib einen vorübergehenden
Die Lösung ist, Leuten wie mir, die keine Möglichkeit haben, die Ursache zu finden, eine Möglichkeit zu geben, weiterhin umzusetzen
(Natürlich ist es korrekt, aber es beginnt nicht mit der Ursache.) Tatsächlich ist es sehr einfach, dieses Problem zu lösen, man führt einfach die Operation session.clean() aus
Aber du hast die Aktion saveOrUpdate(object) nach der Clean-Operation durchgeführt, was möglich ist
"Zwei Darstellungen derselben Sammlung gefunden", ich suchte viele Informationen.
Es gibt keine gute Erklärung, für die dieser Artikel am meisten hilft
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Schließlich kann es mit der session.refresh(object)-Methode gelöst werden, beachten Sie, dass wenn das Objekt nicht ist
Wenn es sich um ein Objekt mit Daten in der Datenbank handelt, kannst du den Faktor session.refresh(object) nicht verwenden
Für Refresh wird das Objekt aus der Winterschlafsitzung neu gefiltert, wenn kein Objekt in der Sitzung vorhanden ist
Wenn dieses Objekt vorhanden ist, wird ein Fehler gemeldet, daher musst du das vor der Verwendung von saveOrUpdate(object) beurteilen.
Mach sie kaputt
Natürlich ist die einfachste Lösung für dieses Problem die Verwendung des Merge() mit Hibernate geliefert.
Methode. Allerdings habe ich immer das Gefühl, dass ich, wenn ich auf Probleme stoße, die sehr nützliche Methode anwende, die mit dieser Software einhergeht
(im Vergleich zu saveOrUpdate(), save(), update()) fühlt sich sehr unangenehm an. Später stellte ich auch fest, dass dieser Fehler oft bei Eins-zu-viele- und Viele-zu-viele-Mapping auftritt, bitte hier
Seien Sie vorsichtig bei der Verwendung von Eins-zu-Viele- und Viele-zu-Viele-Karten Fehlerbehebung und Handhabung im Winterschlaf 1、Ein anderes Objekt mit demselben Identifikationswert war bereits mit der Sitzung verknüpft。 Fehlergrund: Im Winterschlaf gibt es zwei identische Identitäten in derselben Sitzung, aber unterschiedliche Entitäten. Workaround 1: session.clean() PS: Wenn du nach der Clean-Operation Operationen zur Änderung des Datenzustands wie saveOrUpdate(object) durchführst, kannst du eine Ausnahme "Found two representations of same collection" erhalten. Workaround 2: session.refresh(object) PS: Wenn das Objekt kein Objekt mit Daten in der Datenbank ist, kannst du session.refresh(object) nicht verwenden, weil die Methode dazu dient, das Objekt aus der Ruhezustand zu refencieren. Wenn kein Objekt in der Sitzung ist, wird ein Fehler gemeldet, daher musst du vor der Verwendung von saveOrUpdate(object) beurteilen. Lösung 3: session.merge(object) PS: Hibernates eigene Methode wird empfohlen. 2、Zwei Darstellungen derselben Sammlung gefunden Fehlerursache: Siehe 1. Workaround: session.merge(object) Die oben genannten beiden Anomalien treten oft in Eins-zu-Viele- und Viele-zu-Viele-Kartierungen auf
Fehlerursachen:
Mythos:Man kann kein neues Benutzerobjekt erstellen und dann die Benutzerinformationen basierend auf der Benutzer-ID erhalten und diesem Objekt zuweisen, sodass ein anderes Objekt mit demselben Identifikationswert bereits mit dem Sitzungsfehler verknüpft war!!
|