代码之家  ›  专栏  ›  技术社区  ›  BuddyJoe

nhibernate hql相当于t-sql的top关键字

  •  22
  • BuddyJoe  · 技术社区  · 15 年前

    nhibernate hql与t-sql的top关键字有什么对应关系?

    另外,非hql的表达方式是什么?给我一节课的前15节?

    5 回复  |  直到 9 年前
        1
  •  32
  •   mookid8000    15 年前

    实际上,在HQL中非常简单:

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

    但不知道如何使用标准API来实现这一点。

        2
  •  10
  •   Brendan Whelan    15 年前

    标准API方法:

    ICriteria criteria = DaoSession.CreateCriteria(typeof(T));
    criteria.SetFirstResult(StartIndex);
    criteria.SetMaxResults(MaximumObjects);
    return criteria.List<T>();
    
        3
  •  4
  •   Pavel Bakshy    9 年前

    从NHibernate 3.2可以使用 SKIP n / TAKE n 在查询末尾的HQL中。它在不能使用的子查询中非常有用 SetMaxResults .

    例如:

    select l, (select u from User u where u.Location = l order by u.Date asc take 1) 
    from Location l
    
        4
  •  0
  •   Jørn Schou-Rode dscher    12 年前

    为了完整性,下面介绍如何使用 QueryOver NHibernate 3.0中引入的API:

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

    投掷一个 .Skip(someInt) 如果需要定义开始索引,例如用于分页。

        5
  •  0
  •   Andrew Rebane    11 年前

    Mookid8000提供的信息是错误的。

    无法使用hql设置sql top n:。(

    它总是把所有的桌子都下载到.NET上,然后抢占桌面,这简直是愚蠢透顶!