Hibernate Erreur: un objet différent avec le même identifiant de la valeur a déjà été associé à la session

J'ai, pour l'essentiel, certains objets dans cette configuration (le vrai modèle de données est un peu plus complexe):

  • Un a un plusieurs-à-plusieurs relation avec B. B a inverse="true")
  • B a une many-to-one relation avec C. (j'ai cascade ensemble de "save-update")
  • C est une sorte de type/catégorie de la table.

Aussi, je devrais probablement mentionner que les clés primaires sont générés par la base de données sur enregistrer.

Avec mes données, j'ai parfois courir dans des problèmes où l'Un a un ensemble différent de B des objets, et ces objets font référence au même objet C.

Quand je l'appelle session.saveOrUpdate(myAObject), je reçois un hibernate erreur disant: "a different object with the same identifier value was already associated with the session: C". Je sais qu'hibernate ne peut pas insérer/mettre à jour/supprimer le même objet deux fois dans la même session, mais est-il un moyen de contourner cela? Cela ne semble pas comme il le serait si rare d'une situation.

Au cours de mes recherches sur ce problème, j'ai vu des gens suggèrent l'utilisation de session.merge(), mais quand je fais ça, tout "conflit" des objets insérés dans la base de données vide d'objets avec toutes les valeurs null. Clairement ce n'est pas ce que nous voulons.

[Modifier] une Autre chose que j'ai oublié de mentionner, c'est que (pour des raisons d'architecture au-delà de mon contrôle), chaque lecture ou écriture doit être fait dans une autre session.

  • Voir si cette answer aide à vous..
InformationsquelleAutor John | 2013-04-26