Hibernate version: 1.2.0.4000
Mapping documents:
Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="Eficia.Entity.Core.RoleDefinition,Eficia.Entity" table="RoleDefinition">
<id name="_RoleDefinitionid" column="RoleDefinitionID" type="Int64">
<generator class="native"/>
</id>
<property column="RoleName" type="String" name="_RoleName" length="25" />
<property column="Description" type="String" name="_Description" length="150" />
<property column="CreatedOn" type="DateTime" name="_CreatedOn" />
<property column="CreatedBy" type="String" name="_CreatedBy" length="130" />
<property column="UpdatedOn" type="DateTime" name="_UpdatedOn" />
<property column="UpdatedBy" type="String" name="_UpdatedBy" length="130" />
<map name="_SiteMapNodes" lazy="false" table="SiteMapNodeRoleDefinition">
<key column="RoleDefinitionID" />
<index column="SiteMapNodeID" type="Int32" />
<many-to-many class="Eficia.Entity.Core.SiteMapNode,Eficia.Entity" />
</map>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():Not really applicable, since I'm using spring.net, but basically:
Code:
return HibernateTemplate.Load<T>(entityID);
Full stack trace of any exception that occurs:TestCase 'Eficia.UnitTests.UserTest.GetSiteMapNodesForRoleDefinitionTest'
failed: NHibernate.ADOException : could not initialize a collection: [Eficia.Entity.Core.RoleDefinition._SiteMapNodes#1][SQL: SELECT sitemapno0_.RoleDefinitionID as RoleDefi1___1_, sitemapno0_.elt as elt1_, sitemapno0_.SiteMapNodeID as SiteMapN3___1_, sitemapnod1_.SiteMapNodeID as SiteMapN1_20_0_, sitemapnod1_.Title as Title20_0_, sitemapnod1_.Description as Descript3_20_0_, sitemapnod1_.Url as Url20_0_, sitemapnod1_.ParentNode as ParentNode20_0_, sitemapnod1_.RootNode as RootNode20_0_, sitemapnod1_.CreatedOn as CreatedOn20_0_, sitemapnod1_.CreatedBy as CreatedBy20_0_, sitemapnod1_.UpdatedOn as UpdatedOn20_0_, sitemapnod1_.UpdatedBy as UpdatedBy20_0_ FROM SiteMapNodeRoleDefinition sitemapno0_ left outer join SiteMapNode sitemapnod1_ on sitemapno0_.elt=sitemapnod1_.SiteMapNodeID WHERE sitemapno0_.RoleDefinitionID=?]
----> System.Data.SqlClient.SqlException : Invalid column name 'elt'.
Invalid column name 'elt'.
at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor session, Object id, IType type)
at NHibernate.Loader.Collection.CollectionLoader.Initialize(Object id, ISessionImplementor session)
at NHibernate.Persister.Collection.AbstractCollectionPersister.Initialize(Object key, ISessionImplementor session)
at NHibernate.Impl.SessionImpl.InitializeCollection(IPersistentCollection collection, Boolean writing)
at NHibernate.Collection.AbstractPersistentCollection.ForceInitialization()
at NHibernate.Impl.SessionImpl.InitializeNonLazyCollections()
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.LoadEntity(ISessionImplementor session, Object id, IType identifierType, Object optionalObject, Type optionalEntityName, Object optionalIdentifier, IEntityPersister persister)
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(ISessionImplementor session, Object id, Object optionalObject, Object optionalId)
at NHibernate.Loader.Entity.AbstractEntityLoader.Load(Object id, Object optionalObject, ISessionImplementor session)
at NHibernate.Persister.Entity.AbstractEntityPersister.Load(Object id, Object optionalObject, LockMode lockMode, ISessionImplementor session)
at NHibernate.Impl.SessionImpl.DoLoad(Type theClass, Object id, Object optionalObject, LockMode lockMode, Boolean checkDeleted)
at NHibernate.Impl.SessionImpl.ImmediateLoad(Type clazz, Object id)
at NHibernate.Proxy.LazyInitializer.Initialize()
at NHibernate.Proxy.CastleLazyInitializer.Intercept(IInvocation invocation, Object[] args)
at CProxyTypeEficia_Entity_CoreRoleDefinitionCore_NHibernate_ProxyINHibernateProxy_System_Runtime_SerializationISerializable2.get_SiteMapNodes()
C:\src\Eficia\trunk\Eficia.UnitTests\UserTest.cs(48,0): at Eficia.UnitTests.UserTest.GetSiteMapNodesForRoleDefinitionTest()
--ADOException
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
at NHibernate.Impl.BatcherImpl.ExecuteReader(IDbCommand cmd)
at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, RowSelection selection, ISessionImplementor session)
at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies)
at NHibernate.Loader.Loader.LoadCollection(ISessionImplementor session, Object id, IType type)
Name and version of the database you are using: MS SQL 2005
The generated SQL (show_sql=true):Code:
SELECT sitemapno0_.RoleDefinitionID as RoleDefi1___1_, sitemapno0_.elt as elt1_, sitemapno0_.SiteMapNodeID as SiteMapN3___1_, sitemapnod1_.SiteMapNodeID as SiteMapN1_20_0_, sitemapnod1_.Title as Title20_0_, sitemapnod1_.Description as Descript3_20_0_, sitemapnod1_.Url as Url20_0_, sitemapnod1_.ParentNode as ParentNode20_0_, sitemapnod1_.RootNode as RootNode20_0_, sitemapnod1_.CreatedOn as CreatedOn20_0_, sitemapnod1_.CreatedBy as CreatedBy20_0_, sitemapnod1_.UpdatedOn as UpdatedOn20_0_, sitemapnod1_.UpdatedBy as UpdatedBy20_0_ FROM SiteMapNodeRoleDefinition sitemapno0_ left outer join SiteMapNode sitemapnod1_ on sitemapno0_.elt=sitemapnod1_.SiteMapNodeID WHERE sitemapno0_.RoleDefinitionID=?
Debug level Hibernate log excerpt:
what, the whole 3000 lines of it?
I'm trying to map a many-to-many collection to a IDictionary<int, SiteMapNode>, is this even possible and if it is, what am I doing wrong here?
edit: gosh darn, I meant IDictionary<int, SiteMapNode> of course.