当我尝试使用setFirstResult时,Nhibernate版本3.3.3出现了问题。
IQuery q = session.CreateQuery("Select a from SelectionAssignment a ")
.SetFirstResult(1)
.SetMaxResults(10);
var assignments = q.List<SelectionAssignment>();
上面所述的SQL如下所示:
SELECT TOP (10) asId30_
, asHostId30_
, asDescript3_30_
, asIsChase30_
, asPosition30_
, asGoalTime30_
, asRoute30_
, asActiveta8_30_
, asPassAssi9_30_
, asSummary10_30_
, asOverrid11_30_
, asDeliver12_30_
, asDirectLoad30_
, asAllowDe14_30_
, asVehicle15_30_
, asCustomerId30_
, asTotalWe17_30_
, asTotalItems30_
, asSingleSKU30_
, asSingleB20_30_
, asCreated21_30_
, asStartDate30_
, asEndDate30_
, asPriority30_
, asIsDeleted30_
, asDeleted26_30_
, asDeleted27_30_ FROM
(
select selectiona0_.Id as Id30_
, selectiona0_.HostId as HostId30_
, selectiona0_.Description as Descript3_30_
, selectiona0_.IsChase as IsChase30_
, selectiona0_.Position as Position30_
, selectiona0_.GoalTime as GoalTime30_
, selectiona0_.Route as Route30_
, selectiona0_.ActivetargetContainer as Activeta8_30_
, selectiona0_.PassAssignment as PassAssi9_30_
, selectiona0_.SummaryPromptType as Summary10_30_
, selectiona0_.OverridePrompt as Overrid11_30_
, selectiona0_.DeliveryLocationId as Deliver12_30_
, selectiona0_.DirectLoad as DirectLoad30_
, selectiona0_.AllowDeliverLocationOverride as AllowDe14_30_
, selectiona0_.VehicleLicense as Vehicle15_30_
, selectiona0_.CustomerId as CustomerId30_
, selectiona0_.TotalWeight as TotalWe17_30_
, selectiona0_.TotalItems as TotalItems30_
, selectiona0_.SingleSKU as SingleSKU30_
, selectiona0_.SingleBatch as SingleB20_30_
, selectiona0_.CreatedDate as Created21_30_
, selectiona0_.StartDate as StartDate30_
, selectiona0_.EndDate as EndDate30_
, selectiona0_.Priority as Priority30_
, selectiona0_.IsDeleted as IsDeleted30_
, selectiona0_.DeletedDate as Deleted26_30_
, selectiona0_.DeletedUser as Deleted27_30_
, ROW_NUMBER() OVER(ORDER BY CURRENT_TIMESTAMP) as __hibernate_sort_row
from SelectionAssignment selectiona0_ where ( selectiona0_.IsDeleted=0)
) as query
WHERE query.__hibernate_sort_row > 0
ORDER BY query.__hibernate_sort_row
然而,如果我将参数设置为.SetFirstResult(0),则工作正常。
有人能告诉我为什么吗?或者我怎么才能解决这个问题?
编辑:对不起,我收到了无效列名'asId30‘'asHostId30’等的错误消息。列名是Id,HostId等。
发布于 2013-09-18 00:06:15
我发现了问题。它似乎是列名"SelectionAssignment“引起了一个问题,因为NHibernate在生成的SQL上使用了自己的别名,它需要10个字符并添加一个数字。然而,我列名中的第十个和第十一个字是"AS“。这似乎会导致与查询冲突时,它试图把自己的,如在那里。
一旦我将列名更改为不同的"PickingAssignment“,问题就解决了。
我希望我已经解释得足够清楚了,它可以帮助其他人在同样的问题上。感谢jbl的帮助。
https://stackoverflow.com/questions/18831973
复制相似问题