【问题标题】:Problem on a query with NHibernate使用 NHibernate 查询的问题
【发布时间】:2009-08-25 22:38:05
【问题描述】:

我有一个非常简单的场景,使用 NHibernate:

  • 一个抽象基类“动物”;
  • 两个具体的子类“cat”和“dog”,带有鉴别器列(1 代表狗,2 代表猫);
  • 一个普通类Person;

人拥有多对一的动物。

我想检索一个有狗的人的列表。 我怎样才能做到这一点? 非常感谢

【问题讨论】:

    标签: nhibernate hierarchy


    【解决方案1】:

    如果我理解得很好,是这样的:

    var list = session.CreateCriteria(typeof(Person))
        .CreateCriteria("Animal")
            .Add(Expression.Eq("discriminatorField", 1))
        .List<Person>();
    

    上面是“Criteria API”,但您可以使用“HQL”,它更像是这样的:

    StringBuilder query = new StringBuilder();
    query.Append("from Person pers where ");
    query.Append("from Animal ani ... and :wichAnimal");
    query.Append("and cus.IsActive = :wichAnimal");
    
    IList<Person> list = session
        .CreateQuery(query.ToString())
        .SetInt16("wichAnimal",1)
        .List<Person>(); 
    

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多