Un alt obiect cu aceeași valoare de identificator era deja asociat cu sesiunea: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, a entității: XXX
Am întâmpinat această eroare de două ori în total și nu am găsit niciodată o soluție bună, iar această eroare a apărut
Motivul este probabil bine cunoscut, deoarece în hibernare există două logo-uri identice în aceeași sesiune
Totuși, dacă este o entitate diferită, această eroare va fi raportată la rularea operațiunii saveOrUpdate(object).
Hehe, poate vei spune că nu există nicio diferență între ce spui și ce nu spui, recunosc, hehe, nu știu detaliile
De ce a apărut această eroare, altfel nu ar fi fost rezolvată pentru mult timp, acum, dă-mi una temporară
Soluția este să le oferim oamenilor ca mine, care nu au nicio cale de a găsi cauza principală, o modalitate de a continua să implementeze
(Desigur că este corect, dar nu începe cu cauza) De fapt, este foarte simplu să rezolvi această problemă, doar efectuează operațiunea session.clean()
Dar ai efectuat operația saveOrUpdate(object) după operația de curățare, ceea ce este posibil
"Am găsit două reprezentări ale aceleiași colecții", am căutat multe informații.
Nu există o explicație bună, iar acest articol ajută cel mai mult
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
În final, poate fi rezolvat prin metoda session.refresh(object), rețineți că atunci când obiectul nu este
Dacă este un obiect cu date în baza de date, nu poți folosi factorul session.refresh(object)
Pentru refresh, obiectul este preluat din sesiunea de hibernare, dacă nu există niciun obiect în sesiune
Dacă există acest obiect, va fi raportată o eroare, așa că trebuie să judeci înainte de a folosi saveOrUpdate(object).
Rupe-l
Desigur, cea mai simplă soluție la această problemă este să folosești merge() care vine odată cu Hibernate.
metodă. Totuși, simt mereu că atunci când întâmpin probleme, folosesc metoda foarte utilă care vine cu acest software
(comparativ cu saveOrUpdate(), save(), update()) se simte foarte neplăcut. Mai târziu am descoperit că această eroare apare adesea în maparea unu-la-multe și în maparea multe-la-mulți, vă rog să fiți aici
Fii atent când folosești maparea unu-la-mulți și mulți-la-mulți Depanarea și gestionarea Hibernate 1、un obiect diferit cu aceeași valoare de identificator era deja asociat cu sesiunea。 Motivul eroării: În hibernare, există două identități identice în aceeași sesiune, dar entități diferite. Soluția 1: session.clean() PS: Dacă efectuați operații pentru a schimba starea datelor, cum ar fi saveOrUpdate(object), după operația de curățare, este posibil să primiți o excepție "Au fost găsite două reprezentări ale aceleiași colecții". Soluția 2: session.refresh(object) PS: Când obiectul nu este un obiect cu date în baza de date, nu poți folosi session.refresh(object) deoarece metoda este să recuperezi obiectul din sesiunea hibernate; dacă nu există niciun obiect în sesiune, va fi raportată o eroare, deci trebuie să judeci înainte de a folosi saveOrUpdate(object). Soluția 3: session.merge(object) PS: Se recomandă metoda proprie a Hibernate. 2、Am găsit două reprezentări ale aceleiași colecții Cauza eroarei: Vezi 1. Soluție alternativă: session.merge(object) Cele două anomalii de mai sus apar adesea în maparea unu-la-multe și în maparea multe-la-multe
Cauzele erorii:
Mit:Nu poți crea un nou obiect de utilizator și apoi să obții informațiile de utilizator pe baza ID-ului de utilizator și să le atribui acestui obiect, astfel încât un alt obiect cu aceeași valoare de identificator să fie deja asociat cu eroarea de sesiune!!
|