Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 21246|Svar: 0

[Kilde] et andet objekt med samme identifikatorværdi var allerede tilknyttet...

[Kopier link]
Opslået på 01/07/2016 10.48.52 | | | |
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!!





Tidligere:Anvendelse af dynamisk i C# 4.0
Næste:Klon lav replikation af c#-objekter
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com