Drug objekt z enako vrednostjo identifikatorja je bil že povezan s sejo: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, entiteta: XXX
S to napako sem naletel dvakrat in nikoli nisem našel dobre rešitve, ta napaka pa se je pojavila
Razlog je verjetno dobro znan, saj sta v hibernaciji v isti seji dva enaka logotipa
Če pa gre za drugo entiteto, bo ta napaka prijavljena pri izvajanju operacije saveOrUpdate(object).
Hehe, morda boš rekel, ni razlike med tem, kar rečeš in kar ne rečeš, priznam, hehe, ne poznam podrobnosti
Zakaj je prišlo do te napake, sicer ne bi bila odpravljena dolgo časa, zdaj pa navedite začasno
Rešitev je, da ljudem, kot sem jaz, ki nimamo načina, da najdejo vzrok, omogočimo, da nadaljujejo z izvajanjem
(Seveda je pravilno, vendar se ne začne z vzrokom) Pravzaprav je ta problem zelo preprosto rešiti, preprosto izvedite operacijo session.clean()
Vendar ste operacijo saveOrUpdate(object) izvedli po operaciji čiščenja, kar je mogoče
"Našel dve predstavitvi iste zbirke", sem iskal veliko informacij.
Ni dobre razlage, pri kateri ta članek najbolj pomaga
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Nazadnje ga lahko rešimo z metodo session.refresh(object), pri čemer upoštevajte, da kadar objekt ni
Če gre za objekt s podatki v podatkovni bazi, ne morete uporabiti faktorja session.refresh(object)
Za osveževanje pomeni ponovno pridobiti objekt iz hibernirane seje, če v seji ni objekta
Če je ta objekt, bo prijavljena napaka, zato morate presoditi, preden uporabite saveOrUpdate(object).
Zlomi ga
Seveda je najlažja rešitev tega problema uporaba merge(), ki je priložen Hibernate.
Metoda. Vendar pa vedno čutim, da ko naletim na težave, uporabim zelo uporabno metodo, ki jo ta programska oprema ponuja
(v primerjavi s saveOrUpdate(), save(), update()) se zdi zelo neprijetno. Kasneje sem ugotovil tudi, da se ta napaka pogosto pojavlja pri preslikavah ena-na-več in preslikavah mnogo-na-več, prosim, ostanite tukaj
Bodite previdni pri uporabi preslikave ena na več in preslikave na več Hibernacija pri odpravljanju težav in upravljanju 1、Drug objekt z isto vrednostjo identifikatorja je bil že povezan s sejo。 Razlog napake: V hibernaciji sta v isti seji dve identični identiteti, vendar različni entiteti. Rešitev 1: session.clean() PS: Če po čisti operaciji izvedete operacije za spremembo podatkovnega stanja, kot je saveOrUpdate (objekt), lahko prejmete izjemo "Najden dve predstavitvi iste zbirke". Rešitev 2: session.refresh(object) PS: Če objekt ni objekt s podatki v bazi podatkov, ne morete uporabiti session.refresh(object), ker je metoda za ponovno pridobivanje objekta iz hibernacije seje; če v seji ni objekta, bo prijavljena napaka, zato morate presoditi, preden uporabite saveOrUpdate(object). Rešitev 3: session.merge(object) PS: Priporočena je metoda Hibernate. 2、Našli dve predstavitvi iste zbirke Vzrok napake: Glej 1. Rešitev: session.merge(object) Zgornji dve anomaliji se pogosto pojavljata pri preslikavah ena-na-več in preslikavah mnogo-prema-več
Napaka povzroča:
Mit:Ne morete ustvariti novega uporabniškega objekta in nato pridobiti uporabniške podatke na podlagi uporabniškega ID-ja ter jih dodeliti temu objektu, tako da je bil že povezan drug objekt z isto vrednostjo identifikatorja z napako seje!!
|