here I have a simple native sql query to execute using nhibernate. main query is more and more complex. but I can not even execute this simple query!
Code:
ISessionFactory factory = Hibernate.NHibernateUtil.Instance.Factory;
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
string sqlStatement = "SELECT DISTINCT Id AS {department.id}, Title AS {department.title} FROM DEPTS";
IQuery query = session.CreateSQLQuery(sqlStatement, "department", typeof(DepartmentDTO));
IList list = query.List();
transaction.Commit();
session.Close();
and the exception:message: "indicato4_0_"
type: System.IndexOutOfRangeException
and mapping file for DepartmentDTO:Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="TSSDataAccess.DTO.DepartmentDTO, TSSDataAccess" table="depts" dynamic-update="true">
<id name="id" column="id" unsaved-value="0">
<generator class="sequence">
<param name="sequence">TSS.SQ_SUGGESTION</param>
</generator>
</id>
<property name="title" column="title" not-null="false" />
<property name="description" column="description" not-null="false" />
<property name="indicatorCode" column="indicatorcode" not-null="false" />
<property name="deleted" column="deleted" not-null="false" />
<many-to-one name="parentDepartment" class="TSSDataAccess.DTO.DepartmentDTO, TSSDataAccess" column="parentdeptid" cascade="none" unique="true"/>
<bag name="childDepartments" cascade="all">
<key column="parentdeptid"/>
<one-to-many class="TSSDataAccess.DTO.DepartmentDTO, TSSDataAccess"/>
</bag>
<bag name="staffs" cascade="all">
<key column="deptid"/>
<one-to-many class="TSSDataAccess.DTO.StaffDTO, TSSDataAccess"/>
</bag>
<bag name="inFlowSuggestions" cascade="none">
<key column="currentdepartmentid"/>
<one-to-many class="TSSDataAccess.DTO.SuggestionDTO, TSSDataAccess"/>
</bag>
</class>
</hibernate-mapping>
the problem is with
indicatorCode peroperty of DepartmentDTO!
what do you think ? :(
StackTrace :
Quote:
" at System.Data.OracleClient.FieldNameLookup.GetOrdinal(String fieldName)\r\n at System.Data.OracleClient.OracleDataReader.GetOrdinal(String name)\r\n at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String name)\r\n at NHibernate.Type.NullableType.NullSafeGet(IDataReader rs, String[] names, ISessionImplementor session, Object owner)\r\n at NHibernate.Type.AbstractType.Hydrate(IDataReader rs, String[] names, ISessionImplementor session, Object owner)\r\n at NHibernate.Loader.Loader.Hydrate(IDataReader rs, Object id, Object obj, ILoadable persister, ISessionImplementor session, String[][] suffixedPropertyColumns)\r\n at NHibernate.Loader.Loader.LoadFromResultSet(IDataReader rs, Int32 i, Object obj, Key key, String suffix, LockMode lockMode, ILoadable rootPersister, ISessionImplementor session)\r\n at NHibernate.Loader.Loader.InstanceNotYetLoaded(IDataReader dr, Int32 i, ILoadable persister, String suffix, Key key, LockMode lockMode, Key optionalObjectKey, Object optionalObject, IList hydratedObjects, ISessionImplementor session)\r\n at NHibernate.Loader.Loader.GetRow(IDataReader rs, ILoadable[] persisters, String[] suffixes, Key[] keys, Object optionalObject, Key optionalObjectKey, LockMode[] lockModes, IList hydratedObjects, ISessionImplementor session)\r\n at NHibernate.Loader.Loader.GetRowFromResultSet(IDataReader resultSet, ISessionImplementor session, QueryParameters queryParameters, IList hydratedObjects, Object optionalObject, Object optionalId, Key[] keys, Boolean returnProxies)\r\n at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)\r\n at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Object optionalObject, Object optionalId, Object[] optionalCollectionKeys, Boolean returnProxies)\r\n at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters)\r\n at NHibernate.Loader.Loader.List(ISessionImplementor session, QueryParameters queryParameters, ISet querySpaces, IType[] resultTypes)\r\n at NHibernate.Loader.SqlLoader.List(ISessionImplementor session, QueryParameters queryParameters)\r\n at NHibernate.Impl.SessionImpl.FindBySQL(String sqlQuery, String[] aliases, Type[] classes, QueryParameters queryParameters, ICollection querySpaces)\r\n at NHibernate.Impl.SqlQueryImpl.List()\r\n at TSSDataAccess.DAO.StaffDAO.getAccessibleDepts(Int32 staffId) in e:\\farzin\\devdesk\\tss\\solution\\tss\\tssdataaccess\\dao\\staffdao.cs:line 53"