I've been getting this error sometimes and i have no idea why this is
happening.

The project is rather large so i cannot post all the code/mappings
here but what i can do is post the piece of code where the exception
is occurring (if i trust .NET).

Here is Exception + stacktrace:

Exception message:
Exception occurred getter of
Common.Backoffice.Entities.DomainObject.ID

InnerException(s):
Non-static method requires a target.



StackTrace:    at
NHibernate.Properties.BasicPropertyAccessor.BasicGetter.Get(Object
target)
   at
NHibernate.Tuple.Entity.AbstractEntityTuplizer.GetIdentifier(Object
entity)
   at
NHibernate.Persister.Entity.AbstractEntityPersister.GetIdentifier(Object
obj, EntityMode entityMode)
   at NHibernate.Type.EntityType.IsEqual(Object x, Object y,
EntityMode entityMode, ISessionFactoryImplementor factory)
   at NHibernate.Type.ComponentType.IsEqual(Object x, Object y,
EntityMode entityMode, ISessionFactoryImplementor factory)
   at NHibernate.Engine.EntityKey.Equals(Object other)
   at System.Collections.Generic.ObjectEqualityComparer`1.Equals(T x,
T y)
   at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
   at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key,
TValue& value)
   at NHibernate.Engine.StatefulPersistenceContext.GetEntity(EntityKey
key)
   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.DefaultMergeEventListener.EntityIsTransient(MergeEvent
event, IDictionary copyCache)
   at
NHibernate.Event.Default.DefaultMergeEventListener.EntityIsDetached(MergeEvent
event, IDictionary copyCache)
   at
NHibernate.Event.Default.DefaultMergeEventListener.OnMerge(MergeEvent
event, IDictionary copyCache)
   at NHibernate.Impl.SessionImpl.FireMerge(IDictionary copiedAlready,
MergeEvent event)
   at NHibernate.Impl.SessionImpl.Merge(String entityName, Object obj,
IDictionary copiedAlready)
   at
NHibernate.Engine.CascadingAction.MergeCascadingAction.Cascade(IEventSource
session, Object child, String entityName, Object anything, Boolean
isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeToOne(Object child, IType type,
CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType
type, CascadeStyle style, Object anything, Boolean
isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeProperty(Object child, IType
type, CascadeStyle style, Object anything, Boolean
isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeCollectionElements(Object
child, CollectionType collectionType, CascadeStyle style, IType
elemType, Object anything, Boolean isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeCollection(Object child,
CascadeStyle style, Object anything, CollectionType type)
   at NHibernate.Engine.Cascade.CascadeAssociation(Object child, IType
type, CascadeStyle style, Object anything, Boolean
isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeProperty(Object child, IType
type, CascadeStyle style, Object anything, Boolean
isCascadeDeleteEnabled)
   at NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister,
Object parent, Object anything)
   at
NHibernate.Event.Default.DefaultMergeEventListener.CascadeOnMerge(IEventSource
source, IEntityPersister persister, Object entity, IDictionary
copyCache)
   at
NHibernate.Event.Default.DefaultMergeEventListener.EntityIsDetached(MergeEvent
event, IDictionary copyCache)
   at
NHibernate.Event.Default.DefaultMergeEventListener.OnMerge(MergeEvent
event, IDictionary copyCache)
   at
NHibernate.Event.Default.DefaultMergeEventListener.OnMerge(MergeEvent
event)
   at NHibernate.Impl.SessionImpl.FireMerge(MergeEvent event)
   at NHibernate.Impl.SessionImpl.Merge(String entityName, Object obj)
   at NHibernate.Impl.SessionImpl.Merge(Object obj)
   at DirectPay.Backoffice.Repository.Repository`1.Merge(T entity) in
D:\Projecten\DirectPay\branches\Folkert\solution\Source
\DirectPay.Backoffice.Repository\Repository.cs:line 99


Here is the code of the DomainObject where .NET wants me to look but
somehow i have the feeling the fault does not originate here.

public abstract class DomainObject
    {
        private int? _id;

        /// <summary>
        /// Gets or sets the ID.
        /// </summary>
        /// <value>The ID.</value>
        [XmlElement("id")]
        public virtual int? ID
        {
            get { return _id; }
            set
            {
                _id = value;
                _oldHashCode = null;
            }
        }

        public override bool Equals(object obj)
        {
            if(obj == null) return false;
            if (!(GetType().IsInstanceOfType(obj))) return false;
            return ((DomainObject)obj).ID.Equals(ID);
        }

        private int? _oldHashCode;
        public override int GetHashCode()
        {
            // Once we have a hash code we'll never change it

            if (_oldHashCode.HasValue)
                return _oldHashCode.Value;

            bool thisIsTransient = Equals(ID, 0);
            // When this instance is transient, we use the base
GetHashCode()
            // and remember it, so an instance can NEVER change its
hash code.

            if (thisIsTransient)
            {
                _oldHashCode = base.GetHashCode();
                return _oldHashCode.Value;
            }
            return this.ToString().GetHashCode() + ID.GetHashCode();
        }
    }

I´ve been stuck on this exception for a few days now and i´m
absolutely out of ideas, i´m not even sure which object is causing the
exceptions at this point.

If anyone can point me in the right direction i would be ever so
gratefull.

Greetings,

F.B. ten Kate

-- 
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