Un oggetto diverso con lo stesso valore di identificatore era già associato alla sessione: 398fdbba-57b8-4d3d-b84b-4c0c0b497f02, di entità: XXX
Ho incontrato questo errore due volte in totale e non ho mai trovato una buona soluzione, e questo errore si è verificato
La ragione è probabilmente ben nota, perché in ibernazione ci sono due loghi identici nella stessa sessione
Tuttavia, se si tratta di un'entità diversa, questo errore verrà segnalato durante l'esecuzione dell'operazione saveOrUpdate(object).
Hehe, forse dirai che non c'è differenza tra quello che dici e quello che non dici, lo ammetto, hehe, non conosco i dettagli
Perché si è verificato questo errore? Altrimenti non sarebbe stato risolto per molto tempo, ora dai-ne uno temporaneo
La soluzione è dare a persone come me, che non hanno modo di trovare la causa principale, un modo per continuare a implementare
(Certo, è corretto, ma non parte dalla causa) In effetti, è molto semplice risolvere questo problema, basta eseguire l'operazione session.clean()
Ma hai eseguito l'operazione saveOrUpdate(object) dopo l'operazione di pulizia, il che è possibile
"Trovato due rappresentazioni della stessa collezione", cercai molte informazioni.
Non c'è una buona spiegazione, e questo articolo è la più utile
http://opensource.atlassian.com/projects/hibernate/browse/HHH-509。
Infine, può essere risolto con il metodo session.refresh(object), si noti che quando l'oggetto non è
Se si tratta di un oggetto con dati nel database, non puoi usare il fattore session.refresh(object)
Per refresh serve riprendere l'oggetto dalla sessione di ibernazione, se non c'è alcun oggetto nella sessione
Se c'è questo oggetto, verrà segnalato un errore, quindi devi giudicare prima di usare saveOrUpdate(oggetto).
Rompilo
Ovviamente, la soluzione più semplice a questo problema è usare il merge() che viene fornito con Hibernate.
Metodo. Tuttavia, ho sempre la sensazione che quando incontro problemi, uso il metodo molto utile che offre questo software
(rispetto a saveOrUpdate(), save(), update()) è molto sgradevole. Successivamente ho anche scoperto che questo errore si manifesta spesso nella mappatura uno-a-molti e nella mappatura molti-a-molti, per favore siate qui
Fai attenzione quando usi la mappatura uno-a-molti e molti-a-molti Risoluzione e gestione di problemi di Ibernazione 1、un oggetto diverso con lo stesso valore di identificatore era già associato alla sessione。 Motivo dell'errore: In ibernazione, ci sono due identità identiche nella stessa sessione, ma entità diverse. Soluzione alternativa 1: session.clean() PS: Se esegui operazioni per modificare lo stato dei dati come saveOrUpdate(object) dopo l'operazione pulita, potresti ricevere un'eccezione "Trovate due rappresentazioni della stessa collezione". Soluzione alternativa 2: session.refresh(object) PS: Quando l'oggetto non è un oggetto con dati nel database, non puoi usare session.refresh(object) perché il metodo è recuperare l'oggetto dalla sessione di ibernazione; se non c'è un oggetto nella sessione, verrà segnalato un errore, quindi devi giudicare prima di usare saveOrUpdate(object). Soluzione 3: session.merge(oggetto) PS: È consigliato il metodo di Hibernate. 2、Trovato due rappresentazioni della stessa collezione Causa dell'errore: Vedi 1. Soluzione alternativa: session.merge(oggetto) Le due anomalie sopra elencate compaiono spesso nella mappatura uno-a-molti e nella mappatura molti-a-molti
Cause dell'errore:
Mito:Non puoi creare un nuovo oggetto utente e poi ottenere le informazioni utente basate sull'ID utente e assegnarle a quell'oggetto, così che un oggetto diverso con lo stesso valore identificativo fosse già associato all'errore della sessione!!
|