2010-09-29 5 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionHibernate: Impossible de synchroniser l'état de base de données avec la session

Tout en essayant d'insérer une nouvelle entrée à plusieurs à plusieurs table associée, je reçois cette erreur: Could not synchronize database state with session Je peux comprendre que cela est quelque chose de traite getSession() & session.close()

Mais je ne peux pas comprendre exactement. Pour chaque transaction, je crée une nouvelle session. Mais je ferme toutes les sessions à la déconnexion de l'utilisateur. i.e: Création d'une session d'hibernation & le lie à HttpSession. Ensuite, je le détruis dans la déconnexion de l'utilisateur.

Parfois, après avoir travaillé sur ce problème, j'obtiens l'erreur a different object with the same identifier value was already associated with the session:.

Toutes ces erreurs arrivent à cause de l'ouverture incorrecte des sessions de fermeture &.

Quelle méthode préférez-vous pour ouvrir et fermer des sessions? Mon projet consistait à créer une application Web. Chaque déplacement dans cette application Web traite avec DB.

Toutes suggestions !!!

Répondre

10

a different object with the same identifier value was already associated with the session

Mise en veille prolongée conserve la trace des objets mis en correspondance a travaillé à l'intérieur d'une session afin qu'il puisse détecter toute modification apportée à ces objets et de les écrire de nouveau à la base de données lorsque la transaction est validée. Si vous étiez autorisé à ajouter des objets différents avec le même objet identificateur de base de données à une session, il serait ambigu de savoir quel état de l'objet devrait être écrit.

Working with objectsWorking with objects du manuel de référence d'hibernation explique cela (et les moyens de le résoudre) en détail. La section intitulée «Modifier les objets détachés» est particulièrement intéressante, mais il faudra aussi lire l'introduction pour comprendre les termes utilisés.

Questions connexes