Iný objekt s rovnakou hodnotou identifikátora už bol priradený k relácii: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, entity: XXX
S touto chybou som sa stretol celkovo dvakrát a nikdy som nenašiel dobré riešenie, a táto chyba sa stala
Dôvod je pravdepodobne dobre známy, pretože v hibernácii sú v tej istej relácii dve identické logá
Ak však ide o inú entitu, táto chyba sa zobrazí pri spustení operácie saveOrUpdate(object).
Hehe, možno povieš, že nie je rozdiel medzi tým, čo povieš a čo nepovieš, priznávam, hehe, nepoznám detaily
Prečo k tejto chybe došlo, inak by sa dlho nevyriešila, teraz uveďte dočasnú chybu
Riešením je dať ľuďom ako ja, ktorí nemajú spôsob, ako nájsť príčinu, možnosť pokračovať v implementácii
(Samozrejme, že je to správne, ale nezačína to príčinou) V skutočnosti je veľmi jednoduché tento problém vyriešiť – stačí vykonať operáciu session.clean()
Ale operáciu saveOrUpdate(object) ste vykonali po operácii clean, čo je možné
"Našiel som dve reprezentácie tej istej zbierky", hľadal som veľa informácií.
Neexistuje dobré vysvetlenie, na ktoré tento článok najviac pomáha
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Nakoniec to môže byť vyriešené metódou session.refresh(object), všimnite si, že keď objekt nie je
Ak ide o objekt s dátami v databáze, nemôžete použiť faktor session.refresh(object)
Pre obnovenie znamená znovu načítať objekt z hibernátnej relácie, ak v relácii nie je žiadny objekt
Ak sa tento objekt vyskytne, bude nahlásená chyba, takže je potrebné posúdiť situáciu pred použitím saveOrUpdate (objekt).
Rozbij to
Samozrejme, najjednoduchším riešením tohto problému je použiť merge(), ktorý je súčasťou Hibernate.
Metóda. Avšak vždy mám pocit, že keď narazím na problémy, používam veľmi užitočnú metódu, ktorá tento softvér ponúka
(v porovnaní so saveOrUpdate(), save(), update()) pôsobí veľmi nepríjemne. Neskôr som tiež zistil, že táto chyba sa často objavuje pri mapovaní jeden ku mnohým a mnohonásobným mapovaniam, prosím, buďte tu
Buďte opatrní pri používaní mapovania jeden ku mnohým a mnoho-mnohým Riešenie a riešenie hibernácie 1、Iný objekt s rovnakou hodnotou identifikátora už bol priradený k relácii。 Dôvod chyby: V hibernácii sú v tej istej relácii dve identické identity, ale odlišné entity. Obchádzka 1: session.clean() PS: Ak vykonáte operácie na zmenu dátového stavu, napríklad saveOrUpdate(object) po čistej operácii, môžete dostať výnimku "Našli sme dve reprezentácie tej istej kolekcie". Obchádzka 2: session.refresh(object) PS: Ak objekt nie je objekt s dátami v databáze, nemôžete použiť session.refresh(object), pretože metóda je na opätovné načítanie objektu z hibernátnej relácie; ak v session nie je žiadny objekt, bude nahlásená chyba, takže je potrebné posúdiť situáciu pred použitím saveOrUpdate(object). Riešenie 3: session.merge(object) PS: Odporúča sa vlastná metóda Hibernate. 2、Našli sme dve reprezentácie tej istej zbierky Príčina chyby: Pozri 1. Riešenie: session.merge(object) Vyššie uvedené dve anomálie sa často objavujú pri mapovaní jeden na mnohých a mnohonásobných
Chyba spôsobuje:
Mýtus:Nemôžete vytvoriť nový používateľský objekt a potom získať používateľské informácie na základe používateľského ID a priradiť ich tomuto objektu, takže iný objekt s rovnakou hodnotou identifikátora už bol priradený k chybe relácie!!
|