Ett annat objekt med samma identifierarvärde var redan kopplat till sessionen: 398fdbba-57B8-4D3D-B84B-4C0C0B497F02, av entitet: XXX
Jag har stött på detta fel två gånger totalt, och jag har aldrig hittat en bra lösning, och detta fel uppstod
Anledningen är troligen välkänd, eftersom det i dvala finns två identiska logotyper i samma session
Om det däremot är en annan entitet kommer detta fel att rapporteras när saveOrUpdate(object)-operationen körs.
Hehe, kanske säger du att det inte är någon skillnad på vad du säger och vad du inte säger, jag erkänner, hehe, jag vet inte detaljerna
Varför detta fel uppstod, annars hade det inte varit löst på länge, men ge ett tillfälligt
Lösningen är att ge människor som jag, som inte har något sätt att hitta grundorsaken, ett sätt att fortsätta genomföra
(Självklart är det korrekt, men det börjar inte med orsaken) Faktum är att det är väldigt enkelt att lösa detta problem, bara utför session.clean()-operationen
Men du utförde saveOrUpdate(object)-operationen efter rensningsoperationen, vilket är möjligt
"Hittade två representationer av samma samling", jag sökte efter mycket information.
Det finns ingen bra förklaring, och denna artikel hjälper mest till med den
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Slutligen kan det lösas med session.refresh(object)-metoden, observera att när objektet inte är
Om det är ett objekt med data i databasen kan du inte använda session.refresh(object)-faktorn
För refresh är att refetcha objektet från viloläget, om det inte finns något objekt i sessionen
Om det finns detta objekt kommer ett fel att rapporteras, så du behöver bedöma innan du använder saveOrUpdate(object).
Bryt den
Självklart är den enklaste lösningen på detta problem att använda merge() som följer med Hibernate.
metod. Men jag känner alltid att när jag stöter på problem använder jag den mycket användbara metoden som följer med denna programvara
(jämfört med saveOrUpdate(), save(), update()) känns väldigt obehagligt. Senare upptäckte jag också att detta fel ofta förekommer i en-till-många-kartläggning och många-till-många-mappning, vänligen var här
Var försiktig när du använder en-till-många och många-till-många-mappningar Felsökning och hantering av viloläge 1、ett annat objekt med samma identifierarvärde var redan kopplat till sessionen。 Felorsak: I viloläge finns två identiska identiteter i samma session, men olika enheter. Arbetsomväg 1: session.clean() PS: Om du utför operationer för att ändra datastatusen, som saveOrUpdate(object) efter den rensade operationen, kan du få ett undantag för "Hittade två representationer av samma samling". Workaround 2: session.refresh(object) PS: När objektet inte är ett objekt med data i databasen kan du inte använda session.refresh(object) eftersom metoden är att re-recetcha objektet från vilolägessessionen, om det inte finns något objekt i sessionen kommer ett fel att rapporteras, så du måste bedöma innan du använder saveOrUpdate(object). Lösning 3: session.merge(object) PS: Hibernates egen metod rekommenderas. 2、Hittade två representationer av samma samling Felorsak: Se 1. Lösning: session.merge(object) De två ovanstående anomalierna förekommer ofta i en-till-många-kartläggning och många-till-många-kartläggning
Felorsaker:
Myten:Du kan inte skapa ett nytt användarobjekt och sedan hämta användarinformationen baserat på användar-ID:t och tilldela det till detta objekt, så att ett annat objekt med samma identifierarvärde redan var kopplat till sessionsfelet!!
|