Nhibernate Hql+;SetFirstResult+;SetMaxResult+;延迟加载

Nhibernate Hql+;SetFirstResult+;SetMaxResult+;延迟加载,nhibernate,hql,Nhibernate,Hql,我有这个疑问 var hql = @"from Table1 tbl1 left join fetch tbl1.Table2"; var c =session.CreateQuery(hql).SetFirstResult(1).SetMaxResults(5) .List<Table1>().ToList(); NHibernate ICriteria的Set

我有这个疑问

  var hql = @"from Table1 tbl1
                            left join fetch tbl1.Table2";

 var c =session.CreateQuery(hql).SetFirstResult(1).SetMaxResults(5)
                            .List<Table1>().ToList();

NHibernate ICriteria的SetFirstResult是基于零的!第一个结果可能表明它以1开头,但它不是。SetFirstResult(1).SetMaxResults(5)可能不是您想要做的


将其更改为SetFirstResult(0)。SetMaxResults(5)

什么是o/p?如果我去掉SetFirstResult()和SetMaxResults()并执行相同的查询,我不明白什么。它将运行并粘贴表1中的所有内容,而表1将包含表2的集合。那么,为什么它能在这种情况下找到答案呢?因此,如果我选择了选项2,我必须从表1和表2中指定我需要的每一列。我想我误解了你的问题。。更新了答案,看看这是否有助于思考:
NHibernate.Exceptions.GenericADOException was unhandled by user code
  Message=Could not execute query[SQL: SQL not available]
  Source=NHibernate
  SqlString=SQL not available
  StackTrace:
       at NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results)
       at NHibernate.Impl.SessionImpl.List[T](String query, QueryParameters parameters)
       at NHibernate.Impl.QueryImpl.List[T]()
       at MvcApplication1.Controllers.Default1Controller.ThenInHql() in MvcApplication1\MvcApplication1\Controllers\Default1Controller.cs:line 152
       at MvcApplication1.Controllers.Default1Controller.Index() in MvcApplication1\MvcApplication1\Controllers\Default1Controller.cs:line 21
       at lambda_method(Closure , ControllerBase , Object[] )
       at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
       at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: System.ArgumentNullException
       Message=Value cannot be null.
Parameter name: source
       Source=System.Core
       ParamName=source
       StackTrace:
            at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
            at NHibernate.Engine.QueryParameters.CreateCopyUsing(RowSelection selection)
            at NHibernate.Hql.Ast.ANTLR.QueryTranslatorImpl.List(ISessionImplementor session, QueryParameters queryParameters)
            at NHibernate.Engine.Query.HQLQueryPlan.PerformList(QueryParameters queryParameters, ISessionImplementor session, IList results)
            at NHibernate.Impl.SessionImpl.List(String query, QueryParameters queryParameters, IList results)
       InnerException: 
ERROR: 
The value "System.Object[]" is not of type "MvcApplication1.Models.Table1" and cannot be used in this generic collection.
Parameter name: value