NHibernate 1.2, Oracle 9
Hi,
I have an abstract class UmmConsumer and another class ConsumerAction (not abstract). Each ConsumerAction belongs to one UmmConsumer.
sessio.Load<UmmConsumer>(1) will return an instance of SendMailConsumer, which is correct.
session.Load<ConsumerAction>(2728) will throw an exception (see below). ConsumerAction#2728 belongs to UmmConsumer#1.
Since ConsumerAction has a List<UmmConsumer>, nhibernate seems to try to instanciate an instance of UmmConsumer, ignoring subclass definitions, wich leads this exception:
Quote:
NHibernate.HibernateException: Creating a proxy instance failed ---> System.TypeLoadException: Die Methode handleMessage im Typ CProxyTypeUmm_PocoUmmConsumerPoco_NHibernate_ProxyINHibernateProxy1 der Assembly DynamicAssemblyProxyGen, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null hat keine Implementierung.
bei System.Reflection.Emit.TypeBuilder.TermCreateClass(Int32 handle, Module module)
bei System.Reflection.Emit.TypeBuilder.CreateTypeNoLock()
bei System.Reflection.Emit.TypeBuilder.CreateType()
bei Castle.DynamicProxy.Builder.CodeBuilder.AbstractEasyType.BuildType()
bei Castle.DynamicProxy.Builder.CodeGenerators.BaseCodeGenerator.CreateType()
bei Castle.DynamicProxy.Builder.CodeGenerators.ClassProxyGenerator.GenerateCode(Type baseClass, Type[] interfaces)
bei Castle.DynamicProxy.Builder.DefaultProxyBuilder.CreateClassProxy(Type theClass, Type[] interfaces)
bei Castle.DynamicProxy.ProxyGenerator.CreateClassProxy(Type baseClass, Type[] interfaces, IInterceptor interceptor, Boolean checkAbstract, Object[] argumentsForConstructor)
bei NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session)
--- Ende der internen Ausnahmestapelüberwachung ---
bei NHibernate.Proxy.CastleProxyFactory.GetProxy(Object id, ISessionImplementor session)
bei NHibernate.Persister.Entity.AbstractEntityPersister.CreateProxy(Object id, ISessionImplementor session)
bei NHibernate.Impl.SessionImpl.DoLoadByClass(Type clazz, Object id, Boolean checkDeleted, Boolean allowProxyCreation)
bei NHibernate.Impl.SessionImpl.InternalLoad(Type clazz, Object id, Boolean eager, Boolean isNullable)
bei NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session)
bei NHibernate.Type.EntityType.ResolveIdentifier(Object id, ISessionImplementor session, Object owner)
bei NHibernate.Impl.SessionImpl.InitializeEntity(Object obj)
bei NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList hydratedObjects, Object resultSetId, ISessionImplementor session)
bei NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
bei NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
bei NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)
bei NHibernate.Hql.Classic.QueryTranslator.List(ISessionImplementor session, QueryParameters queryParameters)
bei NHibernate.Impl.SessionImpl.Find(String query, QueryParameters parameters, IList results)
bei NHibernate.Impl.SessionImpl.Find(String query, QueryParameters parameters)
bei NHibernate.Impl.QueryImpl.List()
bei NHibernate.Impl.AbstractQueryImpl.UniqueResult()
bei enbw.lib.db.HibernateDAO`1.Load(Object id) in D:\VSSTools\lib\lib\db\HibernateDAO.cs:Zeile 125.
So, any idea why subclass-instanciation works for loading UmmConsumer, but not when indirectly loading UmmConsumer via property of ConsumerAction?
Thanks :)