2010-09-29 12 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionhibernacji: Nie można zsynchronizować stanu bazy danych z sesji

Starając się wstawić nowy wpis na wiele do wielu związanego tabeli, otrzymuję ten błąd: Could not synchronize database state with session mogę zrozumieć, że to jest coś, zajmuje się metodę getSession() & session.close()

Ale nie mogę tego dokładnie rozgryźć. Dla każdej transakcji tworzę nową sesję. Ale zamykam wszystkie sesje przy wylogowaniu użytkownika. tj .: Tworzenie sesji hibernacji & wiąże ją z HttpSession. Następnie niszczy go w wylogowaniu użytkownika.

Kilka razy po pracy nad tym problemem pojawia się błąd a different object with the same identifier value was already associated with the session:.

Wszystkie te błędy nadchodzą z powodu niepoprawnego otwierania sesji zamykających &.

Jaką metodę preferujesz otwierać i zamykać sesje. Mój projekt polegał na tworzeniu aplikacji internetowej. Każdy ruch w tej aplikacji internetowej zajmuje się DB.

Wszelkie sugestie !!!

Odpowiedz

10

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

Hibernate śledzi odwzorowanych obiektów pracował w ramach sesji, dzięki czemu można go wykryć wszelkie zmiany wprowadzone do tych obiektów i zapisać je z powrotem do bazy, gdy transakcja jest zaangażowana. Gdyby można było dodawać różne obiekty z tym samym obiektem identyfikatora bazy danych do sesji, byłoby niejednoznaczne, jaki stan obiektu powinien zostać zapisany.

Working with objects z podręcznika referencyjnego hibernacji objaśnia to (i sposoby jego rozwiązania). Szczególnie interesująca jest sekcja zatytułowana "Modyfikowanie obojętnych obiektów", ale będzie też trzeba przeczytać wstęp, aby zrozumieć użyte terminy.

Powiązane problemy