Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 21246|Odgovoriti: 0

[Vir] drug objekt z enako vrednostjo identifikatorja je bil že povezan z...

[Kopiraj povezavo]
Objavljeno na 1. 07. 2016 10:48:52 | | | |
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!!





Prejšnji:Uporaba dinamike v C# 4.0
Naslednji:Kloniranje plitvih replikacij c# objektov
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com