interesting, maybe I misread the <any> documentation, but it made it
sound like you had to specify a <meta-value>.
I forgot to mention, I'm using the latest 2.0 build. It looks like
the TargetEntityType column gets set to the name of the class (just
the name, no namespace or assembly information) but then when I try to
load from the table, I get the following exception. Any ideas? Also,
thanks for the quick help so far.
NHibernate.MappingException: No persister for: Site
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String
entityName, Boolean throwIfNotFound) in Impl
\SessionFactoryImpl.cs:line 766
at NHibernate.Impl.SessionFactoryImpl.GetEntityPersister(String
entityName) in Impl\SessionFactoryImpl.cs:line 752
at NHibernate.Event.Default.DefaultLoadEventListener.OnLoad
(LoadEvent event, LoadType loadType) in Event\Default
\DefaultLoadEventListener.cs:line 37
at NHibernate.Impl.SessionImpl.FireLoad(LoadEvent event, LoadType
loadType) in Impl\SessionImpl.cs:line 2055
at NHibernate.Impl.SessionImpl.InternalLoad(String entityName,
Object id, Boolean eager, Boolean isNullable) in Impl
\SessionImpl.cs:line 1068
at NHibernate.Type.AnyType.ResolveAny(String entityName, Object id,
ISessionImplementor session) in Type\AnyType.cs:line 396
at NHibernate.Type.AnyType.ResolveIdentifier(Object value,
ISessionImplementor session, Object owner) in Type\AnyType.cs:line 107
at NHibernate.Engine.TwoPhaseLoad.InitializeEntity(Object entity,
Boolean readOnly, ISessionImplementor session, PreLoadEvent
preLoadEvent, PostLoadEvent postLoadEvent) in Engine
\TwoPhaseLoad.cs:line 69
at NHibernate.Loader.Loader.InitializeEntitiesAndCollections(IList
hydratedObjects, Object resultSetId, ISessionImplementor session,
Boolean readOnly) in Loader\Loader.cs:line 617
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies) in Loader
\Loader.cs:line 466
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections
(ISessionImplementor session, QueryParameters queryParameters, Boolean
returnProxies) in Loader\Loader.cs:line 187
at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor
session, Object id, IType type) in Loader\Loader.cs:line 1603
at NHibernate.Loader.Collection.CollectionLoader.Initialize(Object
id, ISessionImplementor session) in Loader\Collection
\CollectionLoader.cs:line 30
at
NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize
(Object key, ISessionImplementor session) in Persister\Collection
\AbstractCollectionPersister.cs:line 527
at
NHibernate.Event.Default.DefaultInitializeCollectionEventListener.OnInitializeCollection
(InitializeCollectionEvent event) in Event\Default
\DefaultInitializeCollectionEventListener.cs:line 42
at NHibernate.Impl.SessionImpl.InitializeCollection
(IPersistentCollection collection, Boolean writing) in Impl
\SessionImpl.cs:line 1342
at
NHibernate.Collection.AbstractPersistentCollection.ForceInitialization
() in Collection\AbstractPersistentCollection.cs:line 462
at
NHibernate.Engine.StatefulPersistenceContext.InitializeNonLazyCollections
() in Engine\StatefulPersistenceContext.cs:line 901
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections
(ISessionImplementor session, QueryParameters queryParameters, Boolean
returnProxies) in Loader\Loader.cs:line 193
at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters) in Loader\Loader.cs:line 1808
at NHibernate.Loader.Loader.ListIgnoreQueryCache
(ISessionImplementor session, QueryParameters queryParameters) in
Loader\Loader.cs:line 1718
at NHibernate.Loader.Loader.List(ISessionImplementor session,
QueryParameters queryParameters, ISet`1 querySpaces, IType[]
resultTypes) in Loader\Loader.cs:line 1712
at NHibernate.Hql.Classic.QueryTranslator.List(ISessionImplementor
session, QueryParameters queryParameters) in Hql\Classic
\QueryTranslator.cs:line 1286
at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters
queryParameters, ISessionImplementor session, IList results) in Engine
\Query\HQLQueryPlan.cs:line 226
at NHibernate.Impl.SessionImpl.List(String query, QueryParameters
queryParameters, IList results) in Impl\SessionImpl.cs:line 520
at NHibernate.Impl.SessionImpl.List[T](String query,
QueryParameters parameters) in Impl\SessionImpl.cs:line 499
at NHibernate.Impl.QueryImpl.List[T]() in Impl\QueryImpl.cs:line 95
On Nov 12, 9:52 am, "Fabio Maulo" <
fabioma...@gmail.com> wrote:
> 2008/11/12 Jon Stelly <
jonste...@gmail.com>
>
> > Does this mean I'd need to specify a <meta-value>
> > for any possible derived type that could end up in TargetEntity? This
> > would be over 200 different values, and I'd need to constantly keep
> > this <any> relationship updated with new releases.
>
> Not that mean that you want specify the meta-value.
> Remove the <meta-type> and <meta-value> from the mapping.
> Define : <column name="TargetEntityType" length="500"/>
> And take a look about what happen ;)
>
> I don't know your use case but in NH2.1 (trunk) you can use generics and
> avoid <any>.
http://fabiomaulo.blogspot.com/2008/10/entity-name-in-action-strongly...