Запрос критериев Nhibernate с помощью Join - PullRequest
2 голосов
/ 11 мая 2010

Я хочу сделать следующее, используя запрос NHibernate Criteria

У меня есть "Product" s, который имеет 0 ко многим "Media" s

Продукт может быть связан с 1 по многим категориям продуктов

Они используют таблицу в середине для создания объединения

ProductCategories
Id
Название

ProductsProductCategories
ProductCategoryId
PRODUCTID

Продукты
Id
Название

ProductMedias
PRODUCTID
MediaId

Medias
Id
MediaType

Мне нужно реализовать запрос критерия, чтобы вернуть все продукты в категории продуктов и первые 1 связанный носитель или нет носителя, если его нет.

Таким образом, хотя, например, к "футболке" может быть привязано 10 медиаданных, мой результат должен быть примерно таким:

Product.Id Product.Title MediaId
1 футболка 21
2 Туфли Null
3 Шляпа 43

Я пробовал следующие решения, используя JoinType.LeftOuterJoin

1) productCriteria.SetResultTransformer (Transformers.DistinctRootEntity);

Это не сработало, поскольку преобразование выполняется на стороне кода, и, поскольку у меня есть .SetFirstResult () и .SetMaxResults () для целей подкачки, оно не будет работать.

2). SetProjection (
Projections.Distinct (
Projections.ProjectionList () .Add (Projection.Alias ​​(Projection.Property ("Id"), "Id")) ...
.SetResultTransformer (Transformers.AliasToBean ());

Это не сработало, так как я не могу заполнить значение Medias.Id в проекциях. (Аналогично Прогнозы API nHibernate Criteria )

Любая помощь будет принята с благодарностью

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