These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Indexed many-to-many
PostPosted: Wed May 28, 2008 7:35 am 
Newbie

Joined: Wed May 28, 2008 7:06 am
Posts: 1
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.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.