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.


Reply via email to