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!!
|