【问题标题】:NHibernate: HQL equivalent of Criteria Expression.In()?NHibernate:HQL 等效于 Criteria Expression.In()?
【发布时间】:2010-10-15 18:49:12
【问题描述】:

你会如何在 HQL 中表达以下 Criteria 查询?

var idArray = new int[] { 1, 2, 3, 4, 5 };

Session.CreateCriteria(typeof(Foo))
    .Add(Expression.In("Id", idArray)
    .List<Foo>();

我知道 HQL 中有一个“in”关键字,但据我了解,该关键字用于子查询,而不是像“... where Id in (1, 2, 3, 4, 5)”之类的。如果不是这样,我很乐意接受更正。

谢谢/埃里克

【问题讨论】:

    标签: nhibernate hibernate hql criteria


    【解决方案1】:

    试试这个:

    var idArray = new int[] { 1, 2, 3, 4, 5 };
    var foos = Session
        .CreateQuery("from Foo f where f.Id in (:ids)")
        .SetParameterList("ids", idArray)
        .List<Foo>();
    

    【讨论】:

      【解决方案2】:

      这也有效

      ICriteria sc = session.CreateCriteria(typeof(Foo));
      sc.Add(Restrictions.In("id",new[] { 1, 2 }));
      siteList = sc.List();
      session.Close();
      

      【讨论】:

        猜你喜欢
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-01
        • 2011-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多