Nevermind, I found the problem.
Turns out I had declared SomeClass as Entity<int>, but it's a serial8 on the
Informix DB, so it should have been Entity<long>. Since Informix uses a
different query to get the identity value for serial (32bit) and serial8
(64bit), it was returning 0 for all instances.

   Diego


On Tue, Dec 15, 2009 at 12:37, Diego Mijelshon <[email protected]>wrote:

> I'm getting this when trying to save a few instances of a class:
>
> NHibernate.NonUniqueObjectException: a different object with the same
> identifier value was already associated with the session: 0, of entity:
> SomeClass
>    at
> NHibernate.Engine.StatefulPersistenceContext.CheckUniqueness(EntityKey key,
> Object obj)
>    at
> NHibernate.Event.Default.AbstractSaveEventListener.PerformSaveOrReplicate(Object
> entity, EntityKey key, IEntityPersister persister, Boolean
> useIdentityColumn, Object anything, IEventSource source, Boolean
> requiresImmediateIdAccess)
>    at NHibernate.Event.Default.AbstractSaveEventListener.PerformSave(Object
> entity, Object id, IEntityPersister persister, Boolean useIdentityColumn,
> Object anything, IEventSource source, Boolean requiresImmediateIdAccess)
>    at
> NHibernate.Event.Default.AbstractSaveEventListener.SaveWithGeneratedId(Object
> entity, String entityName, Object anything, IEventSource source, Boolean
> requiresImmediateIdAccess)
>    at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
> event)
>    at
> NHibernate.Event.Default.DefaultSaveEventListener.SaveWithGeneratedOrRequestedId(SaveOrUpdateEvent
> event)
>    at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsTransient(SaveOrUpdateEvent
> event)
>    at
> NHibernate.Event.Default.DefaultSaveEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent
> event)
>    at
> NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent
> event)
>    at NHibernate.Impl.SessionImpl.FireSave(SaveOrUpdateEvent event)
>    at NHibernate.Impl.SessionImpl.Save(Object obj)
>    at SomeRepository.Save(SomeClass entity) in ...
>
> The code is just calling Session.Save(entity).
>
> Relevant mapping is:
>
> <class name="SomeClass" table="some_table" dynamic-insert="true"
> dynamic-update="true">
>  <id name="Id" column="some_class_id">
>  <generator class="identity"/>
>  </id>
>
> Id is declared in the Entity<TIdentity> superclass:
>
> public virtual TIdentity Id { get; protected set; }
>
> The first save (which comes after some saving of other entities) succeeds.
> Any ideas?
>
>    Diego
>

--

You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.


Reply via email to