繁体   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