Et annet objekt med samme identifikatorverdi var allerede tilknyttet økten: 398fdbba-57B8-4D3D-B84B-4C0C0B497F02, av entitet: XXX
Jeg har støtt på denne feilen to ganger totalt, og jeg har aldri funnet en god løsning, og denne feilen oppsto
Årsaken er sannsynligvis godt kjent, fordi det i dvale er to identiske logoer i samme økt
Men hvis det er en annen enhet, vil denne feilen bli rapportert når saveOrUpdate(object)-operasjonen kjøres.
Hehe, kanskje du vil si, det er ingen forskjell på hva du sier og hva du ikke sier, jeg innrømmer, hehe, jeg kjenner ikke detaljene
Hvorfor denne feilen oppstod, ellers ville den ikke vært løst på lenge, nå, gi en midlertidig en
Løsningen er å gi folk som meg, som ikke har noen måte å finne rotårsaken på, en måte å fortsette å implementere på
(Selvfølgelig er det korrekt, men det starter ikke med årsaken) Faktisk er det veldig enkelt å løse dette problemet, bare utfør session.clean()-operasjonen
Men du utførte saveOrUpdate(object)-operasjonen etter clean-operasjonen, noe som er mulig
"Fant to representasjoner av samme samling", jeg lette etter mye informasjon.
Det finnes ingen god forklaring, og denne artikkelen hjelper mest
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Til slutt kan det løses med session.refresh(object)-metoden, merk at når objektet ikke er
Hvis det er et objekt med data i databasen, kan du ikke bruke session.refresh(object)-faktoren
For oppdatering er å refetch-objektet fra dvaleøkten, hvis det ikke finnes noe objekt i sesjonen
Hvis det finnes dette objektet, vil en feil bli rapportert, så du må vurdere før du bruker saveOrUpdate(object).
Bryt den
Selvfølgelig er den enkleste løsningen på dette problemet å bruke merge() som følger med Hibernate.
Metode. Likevel føler jeg alltid at når jeg støter på problemer, bruker jeg den svært nyttige metoden som følger med denne programvaren
(sammenlignet med saveOrUpdate(), save(), update()) føles veldig ubehagelig. Senere fant jeg også ut at denne feilen ofte dukker opp i én-til-mange-mapping og mange-til-mange-mapping, vennligst vær her
Vær forsiktig når du bruker én-til-mange og mange-til-mange-kartlegging Feilsøking og håndtering av dvalemodus 1、et annet objekt med samme identifikatorverdi var allerede tilknyttet økten。 Feilårsak: I dvale finnes det to identiske identiteter i samme økt, men forskjellige enheter. Løsning 1: session.clean() PS: Hvis du utfører operasjoner for å endre datastatus, som saveOrUpdate(object) etter clean-operasjonen, kan du få et «Fant to representasjoner av samme samling»-unntak. Løsning 2: session.refresh(object) PS: Når objektet ikke er et objekt med data i databasen, kan du ikke bruke session.refresh(object) fordi metoden er å refetche objektet fra dvale-økten; hvis det ikke er noe objekt i økten, vil en feil bli rapportert, så du må vurdere før du bruker saveOrUpdate(object). Løsning 3: session.merge(object) PS: Hibernates egen metode anbefales. 2、Fant to representasjoner av samme samling Feilårsak: Se 1. Løsning: session.merge(object) De to anomaliene ovenfor forekommer ofte i én-til-mange-kartlegging og mange-til-mange-kartlegging
Feilårsaker:
Myte:Du kan ikke opprette et nytt brukerobjekt og så hente brukerinformasjonen basert på bruker-ID-en og tildele den til dette objektet, slik at et annet objekt med samme identifikasjonsverdi allerede var knyttet til sesjonsfeilen!!
|