Проблема по запросу с NHibernate - PullRequest
0 голосов
/ 26 августа 2009

У меня очень простой сценарий, использующий NHibernate:

  • один абстрактный базовый класс "животное";
  • два конкретных подкласса "кошка" и "собака" с колонкой дискриминатора (1 для собаки и 2 для кошки);
  • один человек нормального класса;

Человек имеет много-к-одному животного.

Я хочу получить список людей с собакой. Как я могу это сделать? THX много

1 Ответ

0 голосов
/ 26 августа 2009

Если я хорошо понимаю, то примерно так:

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>(); 

НТН

...