我似乎随机发生以下异常:
NHibernate.Exceptions.GenericADOException: Could not execute query [ select businesspr0_.BusinessProcessID as col_0_0_,businesspr0_.ProcessNumber as col_1_0_,businesspr1_.Name as col_2_0_,businesspr0_.DateCreated as col_3_0_,actor2_.displayName as col_4_0_,usergroup3_.Name as col_5_0_,processele5_.Name as col_6_0_ from BusinessProcess businesspr0_ inner join BusinessProcess businesspr1_ on businesspr0_.DeFinitionID=businesspr1_.BusinessProcessID inner join Actor actor2_ on businesspr0_.ActorCreatedID=actor2_.ActorID left outer join UserGroup usergroup3_ on businesspr0_.UserGroupCreatedID=usergroup3_.UserGroupID left outer join Actor usergroup3_1_ on usergroup3_.UserGroupID=usergroup3_1_.ActorID inner join ActiveElement activeelem4_ on businesspr0_.BusinessProcessID=activeelem4_.BusinessProcessID inner join ProcessElement processele5_ on activeelem4_.ProcessElementID=processele5_.ProcessElementID inner join ProcessEmployees processemp6_ on businesspr0_.BusinessProcessID=processemp6_.BusinessProcessID inner join Actor actor7_ on processemp6_.ActorID=actor7_.ActorID inner join UserInGroups users8_ on actor7_.ActorID=users8_.UserGroupID inner join AppUser user9_ on users8_.UserID=user9_.UserID inner join Actor user9_1_ on user9_.UserID=user9_1_.ActorID where businesspr0_.IsDeFinition=0 and (businesspr0_.Finished is null) and @p0=user9_.UserID ] Name:userID - Value:32771 [sql: select businesspr0_.BusinessProcessID as col_0_0_,processele5_.Name as col_6_0_ from BusinessProcess businesspr0_ inner join BusinessProcess businesspr1_ on businesspr0_.DeFinitionID=businesspr1_.BusinessProcessID inner join Actor actor2_ on businesspr0_.ActorCreatedID=actor2_.ActorID left outer join UserGroup usergroup3_ on businesspr0_.UserGroupCreatedID=usergroup3_.UserGroupID left outer join Actor usergroup3_1_ on usergroup3_.UserGroupID=usergroup3_1_.ActorID inner join ActiveElement activeelem4_ on businesspr0_.BusinessProcessID=activeelem4_.BusinessProcessID inner join ProcessElement processele5_ on activeelem4_.ProcessElementID=processele5_.ProcessElementID inner join ProcessEmployees processemp6_ on businesspr0_.BusinessProcessID=processemp6_.BusinessProcessID inner join Actor actor7_ on processemp6_.ActorID=actor7_.ActorID inner join UserInGroups users8_ on actor7_.ActorID=users8_.UserGroupID inner join AppUser user9_ on users8_.UserID=user9_.UserID inner join Actor user9_1_ on user9_.UserID=user9_1_.ActorID where businesspr0_.IsDeFinition=0 and (businesspr0_.Finished is null) and @p0=user9_.UserID] ---> system.indexOutOfRangeException: col_0_0_ 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[] names,ISessionImplementor session,Object owner) at NHibernate.Hql.Ast.ANTLR.Loader.QueryLoader.GetResultColumnorRow(Object[] row,IResultTransformer resultTransformer,IDataReader rs,ISessionImplementor session) at NHibernate.Loader.Loader.GetRowFromresultSet(IDataReader resultSet,QueryParameters queryParameters,LockMode[] lockModeArray,EntityKey optionalObjectKey,IList hydratedobjects,EntityKey[] keys,Boolean returnProxies) at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,Boolean returnProxies) at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session,Boolean returnProxies) at NHibernate.Loader.Loader.DoList(ISessionImplementor session,QueryParameters queryParameters) --- End of inner exception stack trace --- at DotExe.TiCat.DomainModel.Repository.ProcessModel.BusinessProcessDAO.GetProcessForUserGroups(Int32 userID) in D:\Projects\TiCatRNIDS\DotExe.TiCat4\DotExe.TiCat.DomainModel.Repository\ProcessModel\BusinessProcessDAO.cs:line 98 at DotExe.TiCat4.UseCaseRepository.TicketProcess.TicketQueues.RefreshQueue() in D:\Projects\TiCatRNIDS\DotExe.TiCat4\DotExe.TiCat4\UseCaseRepository\TicketProcess\TicketQueues.cs:line 128
奇怪的部分是这个system.indexOutOfRangeException:col_0_0_我无法弄清楚为什么会发生.
如有必要,我可以使用一些xml映射更新帖子.
TNX
更新:
映射和查询抛出ex:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DotExe.TiCat.DomainModel" namespace="DotExe.TiCat.DomainModel.Process"> <class name="BusinessProcess" table="BusinessProcess"> <id name="BusinessProcessID"> <generator class="hilo"/> </id> <property name = "Name" length="1024" type="string" not-null ="false" /> <property name = "Description" length="5000" type="string" not-null ="false" /> <property name = "ProcessNumber" length="500" type="string" not-null ="false" /> <property name = "CommentOnSolve" length="5000" type="string" not-null ="false" /> <property name="IsDeFinition" type="bool"/> <property name="PlaningTimetoSpend" type="long"/> <property name="SpendTime" type="long"/> <property name="DateCreated" type="DateTime" not-null="false"/> <property name="PlanToStart" type="DateTime" not-null="false"/> <property name="PlanToFinish" type="DateTime" not-null="false"/> <property name="Started" type="DateTime" not-null="false"/> <property name="Finished" type="DateTime" not-null="false"/> <property name="CustomerRequestCallBack" type="bool" not-null="false"/> <property name="EscalationTimeLimitInPercents" type="int"/> <property name="IsEscalated" type="bool"/> <property name="IsInfinite" type="bool"/> <many-to-one name="WorkingWeek" class="WorkingWeek" column="WorkingWeekID" not-null="false" lazy="false"/> <many-to-one name="Priority" class="Processpriority" column="PriorityID" not-null="false" lazy="false"/> <many-to-one name="UserCreated" class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorCreatedID" not-null="false" lazy="false"/> <many-to-one name="UserSolved" class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorSolvedID" not-null="false" lazy="false"/> <many-to-one name="GroupCreated" class="DotExe.TiCat.DomainModel.Actors.UserGroup" column="UserGroupCreatedID" not-null="false" lazy="false"/> <many-to-one name="GroupSolved" class="DotExe.TiCat.DomainModel.Actors.UserGroup" column="UserGroupSolvedID" not-null="false" lazy="false"/> <many-to-one name="DeFinition" class="BusinessProcess" column="DeFinitionID" cascade="none" /> <set name="Elements" lazy="false" cascade="save-update"> <key column="BusinessProcessID"/> <one-to-many class="ProcessElement"/> </set> <set name="ActiveElements" table="ActiveElement" lazy="false" cascade="save-update"> <key column="BusinessProcessID"/> <many-to-many class="ProcessElement" column="ProcessElementID"/> </set> <set name="ProcessConsumers" table="ProcessConsumers" lazy="false" cascade="save-update"> <key column="BusinessProcessID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <set name="ProcessEmployees" table="ProcessEmployees" lazy="false"> <key column="BusinessProcessID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <set name="ProcessSupervisors" table="ProcessSupervisors" lazy="false"> <key column="BusinessProcessID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <set name="Flows" lazy="false" cascade="save-update"> <key column="BusinessProcessID"/> <one-to-many class="SequenceFlow"/> </set> <set name="PriorityTimeRules" lazy="false" cascade="save-update"> <key column="BusinessProcessID"/> <one-to-many class="DotExe.TiCat.DomainModel.BusinessRules.PriorityTimeRule"/> </set> </class> <class name="ProcessElement" table="ProcessElement"> <id name="ProcessElementID"> <generator class="hilo"/> </id> <property name = "Name" length="1024" type="string" not-null ="true" /> <property name="IsDeFinition" type="bool"/> <property name="Isstate" type="bool"/> <many-to-one class="BusinessProcess" name="MemberOf" lazy="false" cascade="save-update" column="BusinessProcessID"/> <many-to-one class="ProcessElement" name="DeFinition" column="DeFinitionID"/> <joined-subclass name="Activity"> <key column="ActivityID"/> <property name = "Name" length="1024" type="string" not-null ="true" /> <property name = "Description" length="4000" type="string" not-null ="false" /> <set name="States" > <key column="ActivityID"/> <one-to-many class="ActivityState"/> </set> <joined-subclass name="UserTask" table="UserTask"> <key column="UserTaskID"/> <property name="PlaningTimetoSpend" type="int"/> <property name="SpendTime" type="int"/> <property name="PlanToStart" type="DateTime" not-null="false"/> <property name="PlanToFinish" type="DateTime" not-null="false"/> <property name="Started" type="DateTime" not-null="false"/> <property name="Finished" type="DateTime" not-null="false"/> <set name="Comments"> <key column="UserTaskID"/> <one-to-many class="TaskComment"/> </set> <set name="UserTaskEmployees"> <key column="UserTaskID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <set name="UserTaskSupervisors"> <key column="UserTaskID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <set name="Priorities"> <key column="UserTaskID"/> <one-to-many class="UserTaskPriority"/> </set> <set name="AssignmentRules"> <key column="UserTaskID"/> <one-to-many class="DotExe.TiCat.DomainModel.BusinessRules.AssignmentRule"/> </set> <many-to-one class="DotExe.TiCat.DomainModel.UseCase.ClientApplicationConfig" name="Application" column="ApplicationConfigID"/> <many-to-one class="UserTaskPriority" name="TaskPriority" column="TaskPriorityID"/> </joined-subclass> <joined-subclass name="SendTask"> <key column="SendTaskID"></key> <many-to-one name="EmailAccount" class="DotExe.TiCat.DomainModel.Config.EmailAccount" column="EmailAccountID" lazy="false"></many-to-one> <many-to-one name="Template" class="DotExe.TiCat.DomainModel.Templates.Template" column="TemplateID" lazy="false"></many-to-one> <set name="Actors" lazy="false"> <key column="SendTaskID"></key> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"></many-to-many> </set> <set name="EmailMessages"> <key column="SendTaskID"></key> <one-to-many class="DotExe.TiCat.DomainModel.Email.EmailMessage"/> </set> </joined-subclass> </joined-subclass> <joined-subclass name="Gateway"> <key column="GatewayID"/> <joined-subclass name="ExclusiveGateway"> <key column="ExclusiveGatewayID"/> </joined-subclass> </joined-subclass> <joined-subclass name="Event"> <key column="EventID"></key> <property name="ExecutionTime" type="DateTime" not-null="false"></property> <joined-subclass name="StartEvent"> <key column="StartEventID"></key> </joined-subclass> <joined-subclass name="EndEvent"> <key column="EntEventID"></key> </joined-subclass> </joined-subclass> </class> <class name="ActivityState" table="ActivityState"> <id name="ActivityStateID"> <generator class="hilo"/> </id> <property name = "Name" length="1024" type="string" not-null ="true" /> <property name = "Description" length="4000" type="string" not-null ="false" /> <many-to-one name="StateOf" class="Activity" column="ActivityID"/> <property name="IsEndState" type="bool"/> <property name="IsstartState" type="bool"/> <property name="IsPauseState" type="bool"/> <property name="IsProcessSerializationState" type="bool"/> </class> <class name="SequenceFlow" table ="SequenceFlow"> <id name="SequenceFlowID"> <generator class="hilo"/> </id> <many-to-one class="ProcessElement" name="Source" column="SourceID" lazy="false" cascade="save-update"/> <many-to-one class="ProcessElement" name="Target" column="TargetID" lazy="false" cascade="save-update"/> <many-to-one name="Process" class="BusinessProcess" column="BusinessProcessID" cascade="save-update"/> </class> <class name="UserTaskPriority" table ="UserTaskPriority"> <id name="UserTaskPriorityID"> <generator class="hilo"/> </id> <property name = "Name" length="1024" type="string" not-null ="true" /> </class> <class name="TaskComment" table ="TaskComment"> <id name="TaskCommentID"> <generator class="hilo"/> </id> <property name = "Comment" length="4000" type="string" not-null ="true" /> <many-to-one name="Task" class="ProcessElement" column="UserTaskID"/> <many-to-one name="Actor" class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> <many-to-one name="Process" class="BusinessProcess" column="BusinessProcessID"/> <many-to-one name="Group" class="DotExe.TiCat.DomainModel.Actors.UserGroup" column="UserGroupID"/> <property name="CommentTime" type="DateTime" not-null="false" /> </class> <class name="TransitionLog"> <id name="TransitionLogID"> <generator class="hilo"/> </id> <property name="LogDate" type="DateTime"/> <property name="TaskStarted" type="DateTime" not-null ="false" /> <property name="TaskEnded" type="DateTime" not-null ="false" /> <property name="TimeSpend" type="int" not-null ="false" /> <set name="SendToActors" table="SendToActorLog" lazy="false"> <key column="TransitionLogID"/> <many-to-many class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID"/> </set> <many-to-one name="Actor" class="DotExe.TiCat.DomainModel.Actors.Actor" column="ActorID" lazy="false"/> <many-to-one name="Group" class="DotExe.TiCat.DomainModel.Actors.UserGroup" column="UserGroupID"/> <many-to-one name="fromElement" class="ProcessElement" column="fromElementID" lazy="false"/> <many-to-one name="toElement" class="ProcessElement" column="toElementID"/> <many-to-one name="Process" class="BusinessProcess" column="BusinessProcessID"/> <many-to-one name="LogType" class="LogType" column="LogTypeID" lazy="false"/> <property name="Comment" length="4000" type="string" not-null ="false" /> </class> <class name="LogType"> <id name="LogTypeID"/> <property name = "Name" length="1024" type="string" not-null ="false" /> <property name = "displayName" length="1024" type="string" not-null ="false" /> </class> <class name="Processpriority"> <id name="ProcesspriorityID"/> <property name = "Name" length="1024" type="string" not-null ="false" /> <property name = "displayName" length="1024" type="string" not-null ="false" /> </class> <class name="WorkingWeek"> <id name="WorkingWeekID"> <generator class="hilo"/> </id> <property name="MondayFrom" type="DateTime" not-null="true"/> <property name="MondayTo" type="DateTime" not-null="true"/> <property name="TuesdayFrom" type="DateTime" not-null="true"/> <property name="TuesdayTo" type="DateTime" not-null="true"/> <property name="WednesdayFrom" type="DateTime" not-null="true"/> <property name="WednesdayTo" type="DateTime" not-null="true"/> <property name="ThursdayFrom" type="DateTime" not-null="true"/> <property name="ThursdayTo" type="DateTime" not-null="true"/> <property name="FridayFrom" type="DateTime" not-null="true"/> <property name="FridayTo" type="DateTime" not-null="true"/> <property name="SaturdayFrom" type="DateTime" not-null="true"/> <property name="SaturdayTo" type="DateTime" not-null="true"/> <property name="SundayFrom" type="DateTime" not-null="true"/> <property name="SundayTo" type="DateTime" not-null="true"/> <property name="Is24x7" type="bool"/> <property name="Name" type="string" length="256" not-null="true"/> <!--<set name="BusinessProcesses" cascade="none" lazy="false"> <key column="WorkingWeekID"/> <one-to-many class="BusinessProcess"/> </set>--> </class> </hibernate-mapping>
和查询:
IList<object[]> result = session.createquery(" select bp.BusinessProcessID,bp.ProcessNumber,def.Name as DeFinition," + " bp.DateCreated,actor.displayName as UserCreated," + " group.Name as GroupCreated,task.Name as ActiveTask " + " from BusinessProcess bp " + " join bp.DeFinition as def " + " join bp.UserCreated as actor " + " left join bp.GroupCreated as group " + " join bp.ActiveElements as task" + " join bp.ProcessEmployees as res" + " join res.Users as users " + " where bp.IsDeFinition = false " + " and bp.Finished is null" + " and :userID = users.ActorID").SetParameter("userID",userID).List<object[]>();
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。