2010-09-29 16 views
5

Possible Duplicate:
Hibernate: different object with the same identifier value was already associated with the sessionHibernate: Impossibile sincronizzare lo stato di database con sessione

Durante il tentativo di inserire una nuova voce a un molti a molti tabella associata, sto ottenendo questo errore: Could not synchronize database state with session Posso capire che questo è qualcosa occupa getSession() & Session.close()

ma non posso in grado di capirlo esattamente. Per ogni transazione sto creando una nuova sessione. Ma chiudo tutte le sessioni al logout dell'utente. Ad esempio: la creazione di una sessione di sospensione & lo associa a HttpSession. Quindi lo distruggo nel logout dell'utente.

Alcune volte dopo aver lavorato su questo tema, ottengo a different object with the same identifier value was already associated with the session: errore.

Tutti questi errori stanno venendo a causa di evitare di aprire correttamente & sessioni di chiusura.

Quale metodo preferisci per aprire e chiudere le sessioni. Il mio progetto stava creando un'app web. Ogni singola mossa in quella web-app è gestita da DB.

Qualsiasi suggerimento !!!

risposta

10

a different object with the same identifier value was already associated with the session

Hibernate registra i oggetti mappati lavorato all'interno di una sessione in modo che possa rilevare le modifiche apportate a questi oggetti e li scrivere di nuovo al database quando la transazione è impegnata. Se fosse consentito aggiungere oggetti diversi con lo stesso identificatore di database a una sessione, sarebbe ambiguo quale stato dell'oggetto debba essere scritto.

Working with objects dal manuale di riferimento di ibernazione spiega questo (e modi per risolvere esso) in dettaglio. Di particolare interesse è la sezione intitolata "Modifica di oggetti staccati", ma sarà necessario leggere anche l'introduzione per comprendere i termini utilizzati.

Problemi correlati