Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 21246|Svar: 0

[Källa] ett annat objekt med samma identifierarvärde var redan kopplat till...

[Kopiera länk]
Publicerad på 2016-07-01 10:48:52 | | | |
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!!





Föregående:Användning av dynamisk i C# 4.0
Nästa:Klon-grund replikering av c#-objekt
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com