Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 21246|Vastaus: 0

[Lähde] eri objekti, jolla oli sama tunnistearvo, oli jo liitetty...

[Kopioi linkki]
Julkaistu 1.7.2016 10.48.52 | | | |
Toinen olio, jolla oli sama tunnistearvo, oli jo liitetty sessioon: 398FDBBA-57B8-4D3D-B84B-4C0C0B497F02, jonka entiteetti: XXX



Olen kohdannut tämän virheen yhteensä kahdesti, enkä ole koskaan löytänyt hyvää ratkaisua, ja tämä virhe tapahtui

Syy on todennäköisesti hyvin tiedossa, koska horroksessa samassa istunnossa on kaksi identtistä logoa

Jos kyseessä on eri entiteetti, tämä virhe raportoidaan saveOrUpdate(object)-operaatiota ajaessa.

Hehe, ehkä sanot, ettei ole eroa siinä, mitä sanot ja mitä et sano, myönnän, hehe, en tiedä yksityiskohtia

Miksi tämä virhe tapahtui, muuten sitä ei olisi ratkaistu pitkään aikaan, nyt anna väliaikainen

Ratkaisu on antaa kaltaisilleni, joilla ei ole keinoa löytää juurisyytä, mahdollisuus jatkaa toteuttamista

(Tietenkin se on oikein, mutta se ei ala syystä)
    Itse asiassa tämän ongelman ratkaiseminen on hyvin yksinkertaista, suorita vain session.clean()-toiminto

Mutta saveOrUpdate(object)-operaation suoritettiin puhdistusoperaation jälkeen, mikä on mahdollista

"Löysin kaksi esitystä samasta kokoelmasta", etsin paljon tietoa.

Ei ole olemassa hyvää selitystä, johon tämä artikkeli auttaa eniten

http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。

Lopuksi se voidaan ratkaista session.refresh(object) -menetelmällä, huomaa, että kun objekti ei ole

Jos kyseessä on olio, jolla on dataa tietokannassa, et voi käyttää session.refresh(object) -kerrointa

Refresh tarkoittaa olion uudelleensiirtämistä horrossessiosta, jos sessiossa ei ole objektia

Jos tämä olio on olemassa, virhe raportoidaan, joten sinun täytyy arvioida ennen kuin käytät saveOrUpdate(object)-toimintoa.

Riko se

    Tietenkin helpoin ratkaisu tähän ongelmaan on käyttää Hibernaten mukana tulevaa merge()-toimintoa.

menetelmä. Kuitenkin tunnen aina, että kun kohtaan ongelmia, käytän tämän ohjelmiston mukana tulevaa erittäin hyödyllistä menetelmää

(verrattuna saveOrUpdate(), save(), update()) tuntuu todella epämiellyttävältä.
    Myöhemmin huomasin myös, että tämä virhe esiintyy usein yhdestä moneen-kartoituksessa ja monesta moneen-moneen -kartoituksessa, ole hyvä ja ole täällä

Ole varovainen käyttäessäsi yhdestä moneen ja monesta moneen -kartoitusta
Horrosvianmääritys ja käsittely
1、eri objekti, jolla oli sama tunnistearvo, oli jo liitetty istuntoon。
Virheen syy: Horrostilassa samassa istunnossa on kaksi identtistä identiteettiä, mutta eri olentoja.
Kiertotie 1: session.clean()
PS: Jos teet toimintoja datatilan muuttamiseksi, kuten saveOrUpdate(object) puhdistusoperaation jälkeen, saatat saada "Löydetty kaksi saman kokoelman esitystä" -poikkeuksen.
Kiertotie 2: session.refresh(object)
PS: Kun objekti ei ole olio, jolla on dataa tietokannassa, et voi käyttää session.refresh(object)-tiedostoa, koska menetelmänä on palauttaa olio hibernate-istunnosta; jos sessiossa ei ole objektia, virhe raportoidaan, joten sinun täytyy arvioida ennen saveOrUpdate(objectin) käyttöä.
Ratkaisu 3: session.merge(objekti)
PS: Hibernaten oma menetelmä on suositeltava.
2、Löytyi kaksi esitystä samasta kokoelmasta
Virheen syy: Katso 1.
Kiertotie: session.merge(objekti)
Edellä mainitut kaksi poikkeamaa esiintyvät usein yksi-moneen -kuvauksessa ja monen-moneen-kartoituksessa




Virhe aiheuttaa:

Myytti:Et voi luoda uutta käyttäjäobjektia ja sitten saada käyttäjätiedot käyttäjätunnuksen perusteella ja liittää ne tälle objektille, jolloin toinen objekti, jolla on sama tunnistearvo, olisi jo liitetty istuntovirheeseen!!





Edellinen:Dynaamisen käyttö C# 4.0:ssa
Seuraava:C#-objektien pinnallinen kopioiminen
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com