See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 21907|Vastuse: 0

[Allikas] Teine objekt sama identifikaatori väärtusega oli juba seotud...

[Kopeeri link]
Postitatud 01.07.2016 10:48:52 | | | |
Sessiooniga oli juba seotud teine objekt sama identifikaatori väärtusega: 398FDBBA-57B8-4D3D-B84B-4C0C0B497F02, üksus: XXX



Olen selle veaga kokku kaks korda kokku puutunud ja pole kunagi leidnud head lahendust, ning see viga tekkis

Põhjus on tõenäoliselt hästi teada, sest talveunes on samas sessioonis kaks identset logo

Kui tegemist on teise üksusega, teatatakse sellest veast saveOrUpdate(object) operatsiooni käivitamisel.

Hehe, võib-olla ütled, et pole vahet, mida sa ütled ja mida mitte, ma tunnistan, hehe, ma ei tea täpseid detaile

Miks see viga tekkis, muidu poleks seda ammu lahendatud, nüüd anna ajutine viga

Lahendus on anda inimestele nagu mina, kellel puudub võimalus juurpõhjust leida, võimalus jätkata rakendamist

(Muidugi on see õige, aga see ei alga põhjusest)
    Tegelikult on selle probleemi lahendamine väga lihtne, lihtsalt tee session.clean() operatsioon

Aga sa tegid saveOrUpdate(object) operatsiooni pärast puhastusoperatsiooni, mis on võimalik

"Leidsin kaks sama kollektsiooni kujutist", otsisin palju infot.

Puudub hea selgitus, mida see artikkel kõige rohkem aitab

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

Lõpuks saab selle lahendada session.refresh (object) meetodiga, pane tähele, et kui objekt ei ole

Kui tegemist on objektiga, mille andmebaasis on andmeid, ei saa kasutada session.refresh (object) faktorit

Värskendamiseks tähendab objekti taasühendamist talveuneseisundist, kui sessioonis objekti ei ole

Kui see objekt on olemas, teatatakse veast, seega pead enne saveOrUpdate(object) kasutamist hindama.

Murra see

    Loomulikult on selle probleemi lihtsaim lahendus kasutada Hibernate'iga kaasnevat merge() funktsiooni.

meetod. Kuid ma tunnen alati, et kui mul tekib probleeme, kasutan selle tarkvaraga kaasnevat väga kasulikku meetodit

(võrreldes saveOrUpdate(), save(), update()) tundub väga ebameeldiv.
    Hiljem avastasin ka, et see viga esineb sageli ühe-mitme ja palju-paljude kaardistuses – palun olge siin

Ole ettevaatlik, kui kasutad üks-mitmele ja palju-paljudele kaardistust
Talveunne tõrkeotsing ja käsitlemine
1、sessiooniga oli juba seotud erinev objekt sama identifikaatoriväärtusega。
Vea põhjus: talveunes on samas sessioonis kaks identset identiteeti, kuid erinevad üksused.
Lahendus 1: session.clean()
PS: Kui teed andmeid muutvaid operatsioone, näiteks saveOrUpdate(object) pärast puhastusoperatsiooni, võid saada erandi "Leitud kaks sama kogu esitust".
Lahendus 2: session.refresh(object)
PS: Kui objekt ei ole objekt, millel on andmebaasis andmeid, ei saa kasutada session.refresh(object) faili, sest meetod on objekti taasühendamiseks talveuneseisundist; kui sessioonis objekti pole, teatatakse veast, seega pead enne saveOrUpdate(object) kasutamist hindama.
Lahendus 3: session.merge(object)
PS: Hibernate'i enda meetod on soovitatav.
2、Leidsin kaks sama kollektsiooni kujutist
Vea põhjus: Vaata 1.
Lahendus: session.merge(object)
Ülaltoodud kaks anomaaliat ilmnevad sageli ühe-mitme kaardistuses ja mitme-paljude kaardistuses




Viga põhjustab:

Müüt:Sa ei saa luua uut kasutaja objekti ja siis saada kasutaja ID põhjal kasutaja info ning määrata selle sellele objektile, nii et teine objekt sama identifikaatori väärtusega oleks juba seotud sessiooni veaga!!





Eelmine:Dünaamika kasutamine C# 4.0-s
Järgmine:C# objektide pinnapealne replikatsioon
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com