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