NHibernate 查询问题

发布于 2024-08-03 11:26:41 字数 188 浏览 5 评论 0原文

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

  • 一个抽象基类“animal”;
  • 两个具体子类“cat”和“dog”,带有鉴别器列(1 代表狗,2 代表猫);
  • 一名普通班人员;

人与动物是多对一的。

我想检索养狗的人的列表。 我该怎么做? 非常感谢

I have a very simple scenario, using NHibernate:

  • one abstract base class "animal";
  • two concrete subclass "cat" and "dog" with discriminator column (1 for dog and 2 for cat);
  • one normal class Person;

Person have a many-to-one of animal.

I want retrieve a list of person with a dog.
How can I do this?
thx a lot

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彻夜缠绵 2024-08-10 11:26:41

如果我理解得很好,就像这样:

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

If I understand well, something like this :

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

above is "Criteria API" but you can use "HQL" it's more something like this :

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文