J'ai une requête NHibernate qui ressemble à ceci:Comment implémenter la pagination dans NHibernate avec une jointure gauche requête
var query = Session.CreateQuery(@"
select o
from Order o
left join o.Products p
where
(o.CompanyId = :companyId) AND
(p.Status = :processing)
order by o.UpdatedOn desc")
.SetParameter("companyId", companyId)
.SetParameter("processing", Status.Processing)
.SetResultTransformer(Transformers.DistinctRootEntity);
var data = query.List<Order>();
Je veux implémenter la pagination pour cette requête, donc je retourne que les lignes de x au lieu de l'ensemble jeu de résultats
Je sais à propos SetMaxResults()
et SetFirstResult()
, mais à cause de la left join
et DistinctRootEntity
, qui pourrait revenir à moins de x commandes.
J'ai essayé "select distinct o"
aussi bien, mais le sql généré pour que (en utilisant le SQLServer 2008 dialecte) semble ignorer le distinct
des pages après la première (je pense this est le problème).
Quelle est la meilleure façon d'y parvenir?
L'idée 'exists' est intéressant ... Je vais essayer. –