как бы я преобразовал это объединение, используя запрос Criteria? - PullRequest
0 голосов
/ 22 декабря 2009

Мой запрос на создание (HQL) выглядит так:

Session.CreateQuery(
   "select a from Article as a join a.Categories c where c.ID = :ID")
   .SetInt32("ID", categoryId)

1 Ответ

3 голосов
/ 22 декабря 2009

Прямо это выглядит так:

ICriteria query = Session
  .CreateCriteria<Article>("a")
  .CreateCriteria("a.Categories", "c")
  .Add(Expression.Eq("c.ID", categoryId)

Существует также выражение IdEq, но вы не можете сказать, какой идентификатор (какого имени сущности / псевдонима), поэтому я не доверяю ему.

ICriteria query = Session
  .CreateCriteria<Article>("a")
  .CreateCriteria("a.Categories", "c")
  .Add(Expression.IdEq(categoryId) // a.ID or c.ID?

Проблема с присоединениями к коллекциям. Вы получите столько результатов, сколько даст объединение статей и категорий, это может увеличить количество статей.

Используйте преобразователь результата или подзапросы. См этот пост .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...