Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 21246|Отговор: 0

[Източник] друг обект със същата стойност на идентификатора вече беше свързан с...

[Копирай линк]
Публикувано в 1.07.2016 г. 10:48:52 ч. | | | |
Различен обект със същата стойност на идентификатора вече беше свързан със сесията: 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 и да я присвоиш на този обект, така че различен обект със същата стойност на идентификатора вече да е свързан с грешката в сесията!!





Предишен:Използване на динамика в C# 4.0
Следващ:Клонирана плитка репликация на c# обекти
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com