Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 21246|Svare: 0

[Kilde] et annet objekt med samme identifikasjonsverdi var allerede tilknyttet...

[Kopier lenke]
Publisert på 01.07.2016 10:48:52 | | | |
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!!





Foregående:Bruk av dynamisk i C# 4.0
Neste:Klone grunn replikasjon av c#-objekter
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com