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!!
|