Heim  >  Artikel  >  Java  >  Warum erhalte ich in der myHibernate-Many-to-Many-Zuordnung den Fehler „Anderes Objekt mit demselben Bezeichnerwert war bereits mit der Sitzung verknüpft“?

Warum erhalte ich in der myHibernate-Many-to-Many-Zuordnung den Fehler „Anderes Objekt mit demselben Bezeichnerwert war bereits mit der Sitzung verknüpft“?

DDD
DDDOriginal
2024-10-28 16:18:14263Durchsuche

 Why am I getting

Hibernate Different Identifier Error in Many-to-Many Mapping

Der Fehler „Anderes Objekt mit demselben Identifikatorwert war bereits mit dem verknüpft „Sitzung“ tritt auf, wenn Hibernate versucht, ein Objekt zu speichern, das bereits in der Sitzung vorhanden ist. In diesem Fall scheint es sich um eine Viele-zu-Viele-Zuordnung zu handeln, die die Klassen UserBean, GroupBean und RoleBean umfasst.

Im bereitgestellten Code scheint das Problem aufzutreten, wenn die Methode saveOrUpdate innerhalb von verwendet wird Speicherfunktion. saveOrUpdate versucht, Objekte sowohl zu speichern als auch zu aktualisieren, und in diesem Fall trifft es auf ein doppeltes Rolebean#1-Objekt.

Der Fehler schlägt zwei mögliche Lösungen vor:

  • Verwenden Sie session.merge( e) anstelle von session.saveOrUpdate(e): Diese Methode führt das getrennte Objekt mit dem persistenten Objekt zusammen und vermeidet so den Bezeichnerkonflikt. Es besteht jedoch auch die Möglichkeit, vorhandene Daten zu überschreiben.
  • Identifizieren Sie die Ursache des doppelten Rolebean#1-Objekts: Überprüfen Sie den Code, in dem die Rolebean sowohl dem Benutzer als auch der Gruppe zugewiesen ist, und stellen Sie fest, ob ein Objekt vorhanden ist Problem mit der Art und Weise, wie die Instanzen erstellt oder zugewiesen werden.

Die Ausnahmemeldung weist darauf hin, dass das Rolebean#1-Objekt zweimal in der Sitzung gespeichert wurde, was auftreten kann, wenn dasselbe Objekt mehreren Sammlungen zugewiesen wird (userbean.groups und userbean.roles), ohne jeweils als neue Instanz markiert zu werden.

Durch das Verständnis des Hibernate-Verhaltens und die Untersuchung des Codes, dem die Objekte zugewiesen sind, ist es möglich, das Problem zu beheben und sicherzustellen, dass dies der Fall ist Die Objekte werden innerhalb der Sitzung gespeichert und korrekt zugeordnet.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich in der myHibernate-Many-to-Many-Zuordnung den Fehler „Anderes Objekt mit demselben Bezeichnerwert war bereits mit der Sitzung verknüpft“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn