Hi Everyone

When I try to run the following query I receive a
System.IndexOutOfRangeException.  But if I run just the plain SQL, in
SQL Management Studio the query runs with out any problems. Below you
will find the method, my mapping (i have 4 subclasses)and the stack
trace.

        public IEnumerable<Organization>
GetAllAncestorsOfOrganization(long organizationId)
        {
            var sql = "with Hierachy(Id, Name, ParentId, Level)" +
                          " as" +
                          " (" +
                          "   select Id, Name, ParentId, 0 as Level" +
                          "   from core_Organization e" +
                          "   where e.Id = :id" +
                          "  union all" +
                          "   select e.Id, e.Name, e.ParentId,
eh.Level + 1" +
                          "   from core_Organization e" +
                          "   inner join Hierachy eh" +
                          "      on e.Id = eh.ParentId" +
                          " )" +
                          " select Id, Name, ParentId" +
                          " from Hierachy" +
                          " where Level > 0";
            var list = UnitOfWork.CurrentSession.CreateSQLQuery(sql)
                .AddEntity(typeof (Organization))
                .SetInt64("id", organizationId)
                .List<Organization>();
            return list;
        }

<class name="Organization" table="[core_Organization]" lazy="true">

    <id name="Id" access="property" column="Id" type="Int64" unsaved-
value="0">
      <generator class="native" />
    </id>

    <property name="Name" access="property" type="String" not-
null="true" />

    <many-to-one name="Parent" class="Organization" column="ParentId"
not-null="false" />
    <many-to-one name="OrganizationType" class="OrganizationType"
column="OrgTypeId" not-null="true" />

    <property name="SecurityKey" access="property" type="System.Guid">
      <column name="SecurityKey" not-null="true" />
    </property>

    <set name="Children" cascade="save-update">
      <key column="ParentId" foreign-
key="fk_Organization_Parent_ParentOrganization"/>
      <one-to-many class="Organization"/>
    </set>

    <set name="Notes" cascade="save-update">
      <key column="OrganizationId" foreign-
key="fk_Organization_OrganizationId_OrgnizationNote"/>
      <one-to-many class="OrganizationNote"/>
    </set>

    <property name="IsInactive"/>

NHibernate.ADOException was unhandled
  Message="could not execute query\r\n[ with Hierachy(Id, Name,
ParentId, Level) as (   select Id, Name, ParentId, 0 as Level   from
core_Organization e   where e.Id = @p0  union all   select e.Id,
e.Name, e.ParentId, eh.Level + 1   from core_Organization e   inner
join Hierachy eh      on e.Id = eh.ParentId ) select Id, Name,
ParentId from Hierachy where Level > 0 ]\r\n  Name:id - Value:1\r
\n[SQL: with Hierachy(Id, Name, ParentId, Level) as (   select Id,
Name, ParentId, 0 as Level   from core_Organization e   where e.Id =
@p0  union all   select e.Id, e.Name, e.ParentId, eh.Level + 1   from
core_Organization e   inner join Hierachy eh      on e.Id =
eh.ParentId ) select Id, Name, ParentId from Hierachy where Level >
0]"
  Source="NHibernate"
  SqlString="with Hierachy(Id, Name, ParentId, Level) as (   select
Id, Name, ParentId, 0 as Level   from core_Organization e   where e.Id
= @p0  union all   select e.Id, e.Name, e.ParentId, eh.Level + 1
from core_Organization e   inner join Hierachy eh      on e.Id =
eh.ParentId ) select Id, Name, ParentId from Hierachy where Level > 0"
  StackTrace:
       at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters)
       at
NHibernate.Loader.Loader.ListIgnoreQueryCache(ISessionImplementor
session, QueryParameters queryParameters)
       at NHibernate.Loader.Loader.List(ISessionImplementor session,
QueryParameters queryParameters, ISet`1 querySpaces, IType[]
resultTypes)
       at
NHibernate.Loader.Custom.CustomLoader.List(ISessionImplementor
session, QueryParameters queryParameters)
       at NHibernate.Impl.SessionImpl.ListCustomQuery(ICustomQuery
customQuery, QueryParameters queryParameters, IList results)
       at NHibernate.Impl.SessionImpl.List(NativeSQLQuerySpecification
spec, QueryParameters queryParameters, IList results)
       at NHibernate.Impl.SessionImpl.List[T]
(NativeSQLQuerySpecification spec, QueryParameters queryParameters)
       at NHibernate.Impl.SqlQueryImpl.List[T]()
       at
DomainModel.Repositories.OrganizationRepository.GetAllAncestorsOfOrganization(Int64
organizationId) in C:\Users\hfranco\Documents\Visual Studio
2008\Projects\MyAVID\src\MyAVIDMVC2\Core\DomainModel\Repositories
\OrganizationRepository.cs:line 87
       at DBHiearchyBuild.Program.Main(String[] args) in C:\Users
\hfranco\Documents\Visual Studio 2008\Projects\MyAVID\src
\MyAVIDMVC2\Core\DBHiearchyBuild\Program.cs:line 46
       at System.AppDomain._nExecuteAssembly(Assembly assembly,
String[] args)
       at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.IndexOutOfRangeException
       Message="clazz_"
       Source="System.Data"
       StackTrace:
            at
System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
            at System.Data.SqlClient.SqlDataReader.GetOrdinal(String
name)
            at NHibernate.Driver.NHybridDataReader.GetOrdinal(String
name)
            at NHibernate.Type.NullableType.NullSafeGet(IDataReader
rs, String name)
            at NHibernate.Type.NullableType.NullSafeGet(IDataReader
rs, String name, ISessionImplementor session, Object owner)
            at NHibernate.Loader.Loader.GetInstanceClass(IDataReader
rs, Int32 i, ILoadable persister, Object id, ISessionImplementor
session)
            at
NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i,
ILoadable persister, EntityKey key, LockMode lockMode, String
rowIdAlias, EntityKey optionalObjectKey, Object optionalObject, IList
hydratedObjects, ISessionImplementor session)
            at NHibernate.Loader.Loader.GetRow(IDataReader rs,
ILoadable[] persisters, EntityKey[] keys, Object optionalObject,
EntityKey optionalObjectKey, LockMode[] lockModes, IList
hydratedObjects, ISessionImplementor session)
            at
NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet,
ISessionImplementor session, QueryParameters queryParameters,
LockMode[] lockModeArray, EntityKey optionalObjectKey, IList
hydratedObjects, EntityKey[] keys, Boolean returnProxies)
            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.DoList(ISessionImplementor
session, QueryParameters queryParameters)
       InnerException:

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