J'ai une requête SQL que je dois représenter en utilisant l'API ICriteria de NHibernate.NHibernate - rejoindre une sous-requête en utilisant ICriteria
SELECT u.Id as Id,
u.Login as Login,
u.FirstName as FirstName,
u.LastName as LastName,
gm.UserGroupId_FK as UserGroupId,
inner.Data1,
inner.Data2,
inner.Data3
FROM dbo.User u inner join
dbo.GroupMember gm on u.Id = gm.UserAnchorId_FK
left join
(
SELECT
di.UserAnchorId_FK,
sum(di.Data1) as Data1,
sum(di.Data2) as Data2,
sum(di.Data3) as Data3
FROM
dbo.DailyInfo di
WHERE di.Date between '2009-04-01' and '2009-06-01'
GROUP BY di.UserAnchorId_FK
) inner ON inner.UserAnchorId_FK = u.Id
WHERE gm.UserGroupId_FK = 195
tentatives jusqu'à présent ont inclus la cartographie « utilisateur » et des classes « DailyInfo » (mes entités) et de faire un objet DailyInfo une propriété de l'objet utilisateur. Cependant, comment cartographier la relation de clé étrangère est encore un mystère, à savoir
<one-to-one></one-to-one>
<one-to-many></one-to-many>
<generator class="foreign"><param name="property">Id</param></generator> (!)
Solutions sur le Web sont généralement à faire avec les sous-requêtes dans une clause WHERE, mais je dois gauche se joindre à cette sous-requête au lieu de Assurez-vous que les valeurs NULL sont renvoyées pour les lignes qui ne sont pas jointes.
J'ai le sentiment que je devrais utiliser un critère pour la requête externe, puis former une 'jointure' avec un DetachedCriteria pour représenter la sous-requête?