Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 21246|Atbildi: 0

[Avots] cits objekts ar tādu pašu identifikatora vērtību jau bija saistīts ar...

[Kopēt saiti]
Publicēts 01.07.2016 10:48:52 | | | |
cits objekts ar tādu pašu identifikatora vērtību jau bija saistīts ar sesiju: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, entītija: XXX



Es esmu saskāries ar šo kļūdu divas reizes, un es nekad neesmu atradis labu risinājumu, un šī kļūda radās

Iemesls, iespējams, ir labi zināms, jo hibernācijā vienā sesijā ir divi identiski logotipi

Tomēr, ja tā ir cita entītija, šī kļūda tiks ziņota, palaižot darbību saveOrUpdate(object).

Hehe, varbūt jūs teiksiet, nav atšķirības starp to, ko jūs sakāt un ko jūs nesakāt, es atzīstu, hehe, es nezinu specifiku

Kāpēc šī kļūda radās, pretējā gadījumā tā ilgu laiku nebūtu atrisināta, tagad dodiet pagaidu

Risinājums ir dot tādiem cilvēkiem kā es, kuriem nav iespējas atrast pamatcēloni, veidu, kā turpināt īstenot

(Protams, tas ir pareizi, bet tas nesākas ar cēloni)
    Patiesībā šo problēmu ir ļoti vienkārši atrisināt, vienkārši veiciet session.clean() darbību

Bet jūs veicāt saveOrUpdate(object) darbību pēc tīrīšanas operācijas, kas ir iespējama

"Atradu divus vienas kolekcijas attēlojumus", es meklēju daudz informācijas.

Nav laba skaidrojuma, no kura šis raksts visvairāk palīdz

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

Visbeidzot, to var atrisināt ar session.refresh(object) metodi, ņemiet vērā, ka, ja objekts nav

Ja tas ir objekts ar datiem datu bāzē, nevar izmantot faktoru session.refresh(object)

Atsvaidzināšanai ir jāatjauno objekts no hibernācijas sesijas, ja sesijā nav objekta

Ja ir šis objekts, tiks ziņots par kļūdu, tāpēc jums ir jāspriež pirms saveOrUpdate(object) izmantošanas.

Salauzt to

    Protams, vienkāršākais risinājums šai problēmai ir izmantot merge(), kas nāk kopā ar hibernāciju.

metode. Tomēr es vienmēr jūtu, ka, saskaroties ar problēmām, es izmantoju ļoti noderīgu metodi, kas nāk ar šo programmatūru

(salīdzinot ar saveOrUpdate(), save(), update()) jūtas ļoti nepatīkami.
    Vēlāk es arī atklāju, ka šī kļūda bieži parādās kartēšanā viens pret daudziem un daudziem pret daudziem, lūdzu, esiet šeit

Esiet piesardzīgs, lietojot kartēšanu viens pret daudziem un daudzi pret daudziem
Hibernācijas problēmu novēršana un apstrāde
1 、 cits objekts ar tādu pašu identifikatora vērtību jau bija saistīts ar sesiju。
Kļūdas iemesls: hibernācijas režīmā vienā sesijā ir divas identiskas identitātes, bet dažādas entītijas.
1. risinājums: session.clean()
PS: Ja pēc tīrīšanas operācijas veicat darbības, lai mainītu datu stāvokli, piemēram, saveOrUpdate(object), jūs varat saņemt izņēmumu "Atrasti divi vienas kolekcijas attēlojumi".
2. risinājums: session.refresh(objekts)
PS: Ja objekts nav objekts ar datiem datu bāzē, jūs nevarat izmantot session.refresh(object), jo metode ir pārņemt objektu no hibernācijas sesijas, ja sesijā nav objekta, tiks ziņots par kļūdu, tāpēc jums ir jāspriež pirms saveOrUpdate(object) izmantošanas.
3. risinājums: session.merge(objekts)
PS: Ieteicama paša Hibernate metode.
2 、 Atradu divus vienas kolekcijas attēlojumus
Kļūdas cēlonis: Skatīt 1.
Risinājums: session.merge(objekts)
Iepriekš minētās divas anomālijas bieži parādās kartēšanā viens pret daudziem un daudziem pret daudziem kartēšanā




Kļūdas cēloņi:

Mīts:Jūs nevarat izveidot jaunu lietotāja objektu un pēc tam iegūt lietotāja informāciju, pamatojoties uz lietotāja ID, un piešķirt to šim objektam, lai cits objekts ar tādu pašu identifikatora vērtību jau būtu saistīts ar sesijas kļūdu!!





Iepriekšējo:Dinamikas izmantošana C# 4.0
Nākamo:Klonēt seklu c# objektu replikāciju
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com