DanBlog

Il blog di Daniele Armanasco
posts - 48, comments - 73, trackbacks - 10

NHibernate: eccezione "a different object with the same identifier value was already associated with the session" - SaveOrUpdateCopy

Non ho ancora avuto il tempo di comprendere a fondo la questione, però quando utilizzavo SaveOrUpdate per aggiornare un oggetto già oggetto dello stesso metodo un paio di volte, ottenevo l'eccezione indicata e il record nel db non veniva aggiornata con il Flush successivo. Usando invece SaveOrUpdateCopy, se l'oggetto è già presente nel contesto di persistenza, non viene generata l'eccezione ma viene aggiornato l'oggetto presente (ciò che io pensavo facesse SaveOrUpdate; a questo punto cosa fa SaveOrUpdate? E Update?)

Print | posted on lunedì 23 aprile 2007 03:39 | Filed Under [ Scoperte di un principiante NHibernate ]

Feedback

Gravatar

# re: NHibernate: eccezione "a different object with the same identifier value was already associated with the session" - SaveOrUp

Ciao.
Anche io mi sono imbattuto nello stesso problema.
Save()/Update() pensavo servissero a persistere, rispettivamente, un oggetto nuovo e le modifiche ad uno esistente, e SaveOrUpdate() discriminasse a seconda della valorizzazione del valore dell'identificatore (funzionava tutto se il generatore era native, mentre occorreva utilizzare esplicitamente save() o update() nel caso assigned).
Uso il passato ed il congiuntivo imperfetto perchè in seguito ho trovato questa faq (http://www.hibernate.org/116.html#A21), e le mie (in)certezze si sono dissolte.
SaveOrUpdateCopy() toglie un po' di castagne dal fuoco nel caso si prenda un oggetto in una session, lo si modifichi e si intenda (o si debba) persisterlo in una session differente (quello che succede comunemente usando nh in asp.net, ma non ricaricando l'oggetto prima di modificarlo, magari perchè è stato "prelevato" dal viestate, o dalla (web) session...).
Questo è quanto ho capito... ora devo capire come fare a persistere un oggetto e tutte le sue collezioni senza che mi salti fuori una ex (...ception) :(
NHibernate.TransientObjectException : object references an unsaved transient instance - save the transient instance before flushing
14/08/2007 02:52 | Antonio
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET