Et andet objekt med samme identifikatorværdi var allerede tilknyttet sessionen: 398fdbba-57B8-4D3D-B84B-4C0C0B497F02, af entitet: XXX
Jeg er stødt på denne fejl to gange i alt, og jeg har aldrig fundet en god løsning, og denne fejl opstod
Årsagen er sandsynligvis velkendt, fordi der i dvale er to identiske logoer i samme session
Hvis det dog er en anden enhed, vil denne fejl blive rapporteret, når saveOrUpdate(object)-operationen køres.
Hehe, måske vil du sige, at der ikke er nogen forskel på, hvad du siger, og hvad du ikke siger, jeg indrømmer, hehe, jeg kender ikke detaljerne
Hvorfor denne fejl opstod, ellers ville den ikke være blevet løst i lang tid, giv nu en midlertidig en
Løsningen er at give folk som mig, der ikke har nogen måde at finde rodårsagen på, en måde at fortsætte implementeringen på
(Selvfølgelig er det korrekt, men det starter ikke med årsagen) Faktisk er det meget enkelt at løse dette problem, bare udfør session.clean()-operationen
Men du udførte saveOrUpdate(object)-operationen efter clean-operationen, hvilket er muligt
"Fandt to repræsentationer af den samme samling", jeg søgte efter mange oplysninger.
Der er ingen god forklaring, som denne artikel hjælper mest med
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Endelig kan det løses ved at bruge session.refresh(object)-metoden, bemærk at når objektet ikke er
Hvis det er et objekt med data i databasen, kan du ikke bruge session.refresh(object)-faktoren
For refresh er at refrechere objektet fra dvale-sessionen, hvis der ikke er noget objekt i sessionen
Hvis der er dette objekt, vil der blive rapporteret en fejl, så du skal vurdere, før du bruger saveOrUpdate(object).
Bryd den
Selvfølgelig er den nemmeste løsning på dette problem at bruge merge(), som følger med Hibernate.
metode. Men jeg føler altid, at når jeg støder på problemer, bruger jeg den meget nyttige metode, der følger med denne software
(sammenlignet med saveOrUpdate(), save(), update()) føles meget ubehageligt. Senere fandt jeg også ud af, at denne fejl ofte optræder i én-til-mange-kortlægning og mange-til-mange-kortlægning, vær venlig at være her
Vær forsigtig, når du bruger én-til-mange og mange-til-mange-kortlægning Fejlfinding og håndtering af dvale 1、et andet objekt med samme identifikatorværdi var allerede tilknyttet sessionen。 Fejlårsag: I dvale er der to identiske identiteter i samme session, men forskellige enheder. Workaround 1: session.clean() PS: Hvis du udfører operationer for at ændre datatilstanden, såsom saveOrUpdate(object) efter clean-operationen, kan du modtage en undtagelse for "Fandt to repræsentationer af samme samling". Workaround 2: session.refresh(object) PS: Når objektet ikke er et objekt med data i databasen, kan du ikke bruge session.refresh(object), fordi metoden er at refetche objektet fra dvale-sessionen; hvis der ikke er noget objekt i sessionen, vil der blive rapporteret en fejl, så du skal vurdere, før du bruger saveOrUpdate(object). Løsning 3: session.merge(object) PS: Hibernates egen metode anbefales. 2、Fandt to repræsentationer af samme samling Fejlårsag: Se 1. Workaround: session.merge(object) De to ovenstående anomalier optræder ofte i én-til-mange-mapping og mange-til-mange-mapping
Fejlårsager:
Myte:Du kan ikke oprette et nyt brugerobjekt og så hente brugeroplysningerne baseret på bruger-ID'et og tildele det til dette objekt, så et andet objekt med samme identifikatorværdi allerede var knyttet til sessionsfejlen!!
|