Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 21246|Atsakyti: 0

[Šaltinis] Kitas objektas su ta pačia identifikatoriaus reikšme jau buvo susietas su...

[Kopijuoti nuorodą]
Paskelbta 2016-07-01 10:48:52 | | | |
kitas objektas su ta pačia identifikatoriaus reikšme jau buvo susietas su seansu: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, subjektas: XXX



Iš viso su šia klaida susidūriau du kartus ir niekada neradau gero sprendimo, ir ši klaida įvyko

Priežastis tikriausiai gerai žinoma, nes užmigdymo metu toje pačioje sesijoje yra du identiški logotipai

Tačiau, jei tai kitas objektas, apie šią klaidą bus pranešta vykdant saveOrUpdate(object) operaciją.

Hehe, gal sakysite, nėra skirtumo tarp to, ką sakote ir ko nesakote, pripažįstu, hehe, aš nežinau specifikos

Kodėl įvyko ši klaida, kitaip ji ilgą laiką nebūtų buvusi išspręsta, dabar duokite laikiną

Sprendimas yra suteikti tokiems žmonėms kaip aš, kurie neturi galimybės rasti pagrindinės priežasties, būdą toliau įgyvendinti

(Žinoma, tai teisinga, bet tai neprasideda nuo priežasties)
    Tiesą sakant, šią problemą išspręsti labai paprasta, tiesiog atlikite session.clean() operaciją

Bet po švarios operacijos atlikote saveOrUpdate(object) operaciją, kuri yra įmanoma

"Radau du tos pačios kolekcijos atvaizdus", ieškojau daug informacijos.

Nėra gero paaiškinimo, kuriam šis straipsnis labiausiai padeda

http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。

Galiausiai tai galima išspręsti session.refresh(object) metodu, atkreipkite dėmesį, kad kai objekto nėra

Jei tai objektas, kurio duomenys yra duomenų bazėje, negalite naudoti veiksnio session.refresh(object)

Atnaujinti yra perimti objektą iš užmigdymo seanso, jei sesijoje nėra objekto

Jei yra šis objektas, bus pranešta apie klaidą, todėl prieš naudodami saveOrUpdate(object) turite spręsti.

Sulaužyk

    Žinoma, lengviausias šios problemos sprendimas yra naudoti sujungimą(), kuris pateikiamas su užmigdymo režimu.

metodas. Tačiau visada jaučiu, kad susidūręs su problemomis naudoju labai naudingą metodą, kuris pateikiamas kartu su šia programine įranga

(palyginti su saveOrUpdate(), save(), update()) jaučiasi labai nemalonus.
    Vėliau aš taip pat nustatė, kad ši klaida dažnai pasirodo vienas su daugeliu žemėlapių ir daug su daugeliu žemėlapių, prašome būti čia

Būkite atsargūs naudodami susiejimą "vienas su daugeliu" ir "daugelis su daugeliu"
Užmigdymo trikčių šalinimas ir tvarkymas
1 、 Kitas objektas su ta pačia identifikatoriaus reikšme jau buvo susietas su seansu。
Klaidos priežastis: užmigdymo režimu tame pačiame seanse yra dvi identiškos tapatybės, bet skirtingi objektai.
1 sprendimas: session.clean()
PS: Jei atliksite operacijas, kad pakeistumėte duomenų būseną, pvz., saveOrUpdate(object), po valymo operacijos galite gauti išimtį "Rasta du to paties rinkinio atvaizdai".
2 sprendimas: session.refresh(objektas)
PS: Kai objektas nėra objektas su duomenimis duomenų bazėje, negalite naudoti session.refresh(object), nes metodas yra perimti objektą iš užmigdymo sesijos, jei sesijoje nėra objekto, bus pranešta apie klaidą, todėl prieš naudodami saveOrUpdate(object) turite spręsti.
3 sprendimas: session.merge(objektas)
PS: Rekomenduojamas paties "Hibernate" metodas.
2、Radau du tos pačios kolekcijos atvaizdus
Klaidos priežastis: žr. 1.
Sprendimo būdas: session.merge(objektas)
Pirmiau minėtos dvi anomalijos dažnai atsiranda žemėlapiuose "vienas su daugeliu" ir "daugelis su daugeliu"




Klaidos priežastys:

Mitas:Negalite sukurti naujo vartotojo objekto ir tada gauti vartotojo informaciją pagal vartotojo ID ir priskirti ją šiam objektui, kad kitas objektas su ta pačia identifikatoriaus reikšme jau būtų susietas su sesijos klaida!!





Ankstesnis:Dinamikos naudojimas C# 4.0
Kitą:Klonuoti seklią c# objektų replikaciją
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com