Различен обект със същата стойност на идентификатора вече беше свързан със сесията: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, на обект: XXX
Срещал съм тази грешка общо два пъти и никога не съм намерил добро решение, и тази грешка се появи
Причината вероятно е добре известна, защото в хибернация има две идентични лога в една и съща сесия
Въпреки това, ако е различен обект, тази грешка ще бъде докладвана при изпълнение на операцията saveOrUpdate(object).
Хе-хе, може би ще кажеш, няма разлика между това, което казваш, и това, което не казваш, признавам, хе-хе, не знам подробностите
Защо се появи тази грешка, иначе нямаше да бъде решена отдавна, сега дай временна грешка
Решението е да дадем на хора като мен, които нямат начин да открият коренната причина, начин да продължат да прилагат
(Разбира се, че е вярно, но не започва с причината) Всъщност е много лесно да се реши този проблем, просто изпълнете операцията session.clean()
Но изпълнихте операцията saveOrUpdate(object) след операцията clean, което е възможно
"Намерих две представяния на една и съща колекция", търсих много информация.
Няма добро обяснение, за което тази статия помага най-много
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Накрая, може да се реши чрез метода session.refresh(object), като се има предвид, че когато обектът не е
Ако е обект с данни в базата данни, не можете да използвате фактора session.refresh(object)
За refresh означава да се рефречира обектът от хибернационната сесия, ако в сесията няма обект
Ако има този обект, ще бъде докладвана грешка, затова трябва да прецените преди да използвате saveOrUpdate(object).
Счупи го
Разбира се, най-лесното решение на този проблем е да се използва merge(), който идва с Hibernate.
метод. Въпреки това, винаги усещам, че когато срещна проблеми, използвам много полезния метод, който идва с този софтуер
(в сравнение със saveOrUpdate(), save(), update()) се усеща много неприятно. По-късно открих, че тази грешка често се появява при картографиране едно към много и много към много, моля, бъдете тук
Бъдете внимателни при използване на картографиране от едно към много и много към много Хибернатно отстраняване и обработка на проблеми 1、различен обект със същата стойност на идентификатора вече беше свързан със сесията。 Причина за грешка: В хибернация има две идентични идентичности в една и съща сесия, но различни същности. Решение 1: session.clean() PS: Ако извършите операции за промяна на състоянието на данните, като saveOrUpdate(object) след операцията за почистване, може да получите изключение "Found two representation of same collection". Решение 2: session.refresh(object) PS: Когато обектът не е обект с данни в базата данни, не можете да използвате session.refresh(object), защото методът е да се рефрече обектът от хибернационната сесия; ако няма обект в сесията, ще бъде докладвана грешка, затова трябва да прецените, преди да използвате saveOrUpdate(object). Решение 3: session.merge(обект) P.S.: Препоръчва се собственият метод на Hibernate. 2. Открих две представяния на една и съща колекция Причина за грешка: Вижте 1. Заобиколно решение: session.merge(object) Горните две аномалии често се появяват при картографиране едно към много и много към много
Причините за грешки:
Мит:Не можеш да създадеш нов потребителски обект и след това да получиш потребителската информация въз основа на потребителския ID и да я присвоиш на този обект, така че различен обект със същата стойност на идентификатора вече да е свързан с грешката в сесията!!
|