Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 21246|Odpoveď: 0

[Zdroj] iný objekt s rovnakou hodnotou identifikátora už bol priradený s...

[Kopírovať odkaz]
Zverejnené 1. 7. 2016 10:48:52 | | | |
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!!





Predchádzajúci:Použitie dynamiky v C# 4.0
Budúci:Klonovanie plytkej replikácie objektov v C#
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com