J'ai une classe de produit qui a un rapport de un à plusieurs avec une classe de prix. Ainsi, un produit peut avoir plusieurs prix.Comment définir le résultat de retour maximal pour plusieurs-à-un
Je dois interroger le db pour me procurer 10 produits qui ont Price.amount < $ 2. Dans ce cas, il s'agit de remplir une interface utilisateur avec 10 éléments dans une page. donc je bref le code suivant:
ICriteria criteria = session.CreateCriteria(typeof(Product));
criteria.SetFirstResult(pageNumber);
criteria.SetMaxResults(numberOfItemInPage);
criteria = criteria.CreateCriteria("PriceCollection");
criteria.Add(Restrictions.Le("Amount", new Decimal(2)));
criteria.SetResultTransformer(CriteriaSpecification.DistinctRootEntity);
Au lieu d'obtenir 10 produit sur la liste, je reçois moins que (par exemple 5). La raison étant SetMaxResults (10) me renvoie 10 produits mais avec des doublons. Les doublons sont ensuite supprimés par SetResultTransformer (DistinctRootEntity).
Quelqu'un peut-il me dire n'importe quoi pour obtenir 10 produits uniques sans augmenter SetMaxResults()? J'ai besoin d'utiliser pagenumber comme une sorte d'indexation.
Ce serait une solution mais dans le cas d'une grande table, disons 1 million de lignes, cela aurait un impact sur la performance. –
Si vous appliquez SetMaxResults au début ou à la fin n'a pas d'importance. Il traduira toujours dans la même requête SQL lorsqu'il est exécuté. –