簡體   English   中英

NHibernate HQL相當於T-SQL的TOP關鍵字

[英]NHibernate HQL's Equivalent to T-SQL's TOP Keyword

什么是NHibernate HQL相當於T-SQL的TOP關鍵字?

還有什么是非HQL的說法,給我一個班級的前15個?

在HQL中實際上非常簡單:

var top15 = session.CreateQuery("from SomeEntity")
                .SetFirstResult(0)
                .SetMaxResults(15)
                .List<SomeEntity>();

但是,不知道如何使用條件API執行此操作。

標准API方法:

ICriteria criteria = DaoSession.CreateCriteria(typeof(T));
criteria.SetFirstResult(StartIndex);
criteria.SetMaxResults(MaximumObjects);
return criteria.List<T>();

從NHibernate 3.2開始,你可以在查詢結束時在hql中使用SKIP n / TAKE n 在無法使用SetMaxResults子查詢中,它可能非常有用。

例如:

select l, (select u from User u where u.Location = l order by u.Date asc take 1) 
from Location l

為了完整QueryOver ,這里是如何使用NHibernate 3.0中引入的QueryOver API:

var top15 = session.QueryOver<SomeEntity>().Take(15).List();

如果需要定義起始索引(例如,用於分頁.Skip(someInt)則拋出.Skip(someInt)

mookid8000提供虛假信息。

沒有辦法用HQL設置SQL TOP N :(

它總是將所有表格下載到.NET並且采用TOP,這簡直是愚蠢的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM