Hi, I've been using HashSet<T> to map set collections for some time now, but I just got the exception below when doing a SaveOrUpdateCopy. In this case, a child has been added to the object being saved(actually several levels below in the hierarchy of objects), and this child contains the HashSet object. For now, I resolved the problem by replacing "new HashSet<T>" by "new Iesi.Collections.Generic.HashedSet<T>" in the constructor of the new child object.
Is it a bug ? or am I doing something wrong ? Thanks for your help. System.InvalidCastException: Unable to cast object of type 'System.Collections.Generic.HashSet`1 [Catalogue.Domain.DescriptionBibliotheque]' to type 'Iesi.Collections.ISet'. à NHibernate.Type.SetType.Clear(Object collection) dans \src \NHibernate\Type\SetType.cs:ligne 70 à NHibernate.Type.CollectionType.ReplaceElements(Object original, Object target, Object owner, IDictionary copyCache, ISessionImplementor session) dans \src\NHibernate\Type \CollectionType.cs:ligne 369 à NHibernate.Type.CollectionType.Replace(Object original, Object target, ISessionImplementor session, Object owner, IDictionary copyCache) dans \src\NHibernate\Type\CollectionType.cs:ligne 350 à NHibernate.Type.AbstractType.Replace(Object original, Object target, ISessionImplementor session, Object owner, IDictionary copyCache, ForeignKeyDirection foreignKeyDirection) dans \src \NHibernate\Type\AbstractType.cs:ligne 213 à NHibernate.Type.TypeFactory.ReplaceAssociations(Object[] original, Object[] target, IType[] types, ISessionImplementor session, Object owner, IDictionary copyCache, ForeignKeyDirection foreignKeyDirection) dans \src\NHibernate\Type\TypeFactory.cs:ligne 1140 à NHibernate.Event.Default.DefaultMergeEventListener.CopyValues (IEntityPersister persister, Object entity, Object target, ISessionImplementor source, IDictionary copyCache, ForeignKeyDirection foreignKeyDirection) dans \src\NHibernate\Event\Default \DefaultMergeEventListener.cs:ligne 370 à NHibernate.Event.Default.DefaultMergeEventListener.EntityIsTransient (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 181 à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 115 à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(IDictionary copiedAlready, MergeEvent event) dans \src\NHibernate\Impl \SessionImpl.cs:ligne 2660 à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(String entityName, Object obj, IDictionary copiedAlready) dans \src\NHibernate\Impl \SessionImpl.cs:ligne 973 à NHibernate.Engine.CascadingAction.SaveUpdateCopyCascadingAction.Cascade (IEventSource session, Object child, String entityName, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine \CascadingAction.cs:ligne 298 à NHibernate.Engine.Cascade.CascadeToOne(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 213 à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 181 à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 148 à NHibernate.Engine.Cascade.CascadeComponent(Object child, IAbstractComponentType componentType, Object anything) dans \src \NHibernate\Engine\Cascade.cs:ligne 172 à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 153 à NHibernate.Engine.Cascade.CascadeCollectionElements(Object child, CollectionType collectionType, CascadeStyle style, IType elemType, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate \Engine\Cascade.cs:ligne 232 à NHibernate.Engine.Cascade.CascadeCollection(Object child, CascadeStyle style, Object anything, CollectionType type) dans \src \NHibernate\Engine\Cascade.cs:ligne 201 à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 185 à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 148 à NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, Object parent, Object anything) dans \src\NHibernate\Engine \Cascade.cs:ligne 126 à NHibernate.Event.Default.AbstractSaveEventListener.CascadeAfterSave (IEventSource source, IEntityPersister persister, Object entity, Object anything) dans \src\NHibernate\Event\Default \AbstractSaveEventListener.cs:ligne 370 à NHibernate.Event.Default.DefaultMergeEventListener.EntityIsTransient (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 180 à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 115 à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(IDictionary copiedAlready, MergeEvent event) dans \src\NHibernate\Impl \SessionImpl.cs:ligne 2660 à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(String entityName, Object obj, IDictionary copiedAlready) dans \src\NHibernate\Impl \SessionImpl.cs:ligne 973 à NHibernate.Engine.CascadingAction.SaveUpdateCopyCascadingAction.Cascade (IEventSource session, Object child, String entityName, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine \CascadingAction.cs:ligne 298 à NHibernate.Engine.Cascade.CascadeToOne(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 213 à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 181 à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 148 à NHibernate.Engine.Cascade.CascadeCollectionElements(Object child, CollectionType collectionType, CascadeStyle style, IType elemType, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate \Engine\Cascade.cs:ligne 232 à NHibernate.Engine.Cascade.CascadeCollection(Object child, CascadeStyle style, Object anything, CollectionType type) dans \src \NHibernate\Engine\Cascade.cs:ligne 201 à NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 185 à NHibernate.Engine.Cascade.CascadeProperty(Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled) dans \src\NHibernate\Engine\Cascade.cs:ligne 148 à NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, Object parent, Object anything) dans \src\NHibernate\Engine \Cascade.cs:ligne 126 à NHibernate.Event.Default.DefaultMergeEventListener.CascadeOnMerge (IEventSource source, IEntityPersister persister, Object entity, IDictionary copyCache) dans \src\NHibernate\Event\Default \DefaultMergeEventListener.cs:ligne 398 à NHibernate.Event.Default.DefaultMergeEventListener.EntityIsDetached (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 263 à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge (MergeEvent event, IDictionary copyCache) dans \src\NHibernate\Event \Default\DefaultMergeEventListener.cs:ligne 118 à NHibernate.Event.Default.DefaultMergeEventListener.OnMerge (MergeEvent event) dans \src\NHibernate\Event\Default \DefaultMergeEventListener.cs:ligne 40 à NHibernate.Impl.SessionImpl.FireSaveOrUpdateCopy(MergeEvent event) dans \src\NHibernate\Impl\SessionImpl.cs:ligne 2673 à NHibernate.Impl.SessionImpl.SaveOrUpdateCopy(Object obj) dans \src \NHibernate\Impl\SessionImpl.cs:ligne 2159 -- 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.
