Voici comment vous pouvez créer un critère de mise en veille prolongée requête qui renvoie les 10 premières lignes dans l'ordre décroissant:
Critieria crit = session.createCriteria(Employee.class);
crit.addOrder(Order.desc("empno");
crit.setMaxResults(10);
List<Employee> emps = crit.list();
Gardez à l'esprit que cela retournera le employés dans l'ordre décroissant basé sur empno
donc il retourne un ensemble de résultats d'empno est comme 20,19, ... 11. C'est ce qu'il est censé faire, indépendamment de la base de données sous-jacente, et autant que je peux dire ce que vous avez demandé. Faites-moi savoir si vous vouliez que ce soit 10,9, ... 1 (ce qui n'est techniquement pas les 10 premières lignes dans l'ordre décroissant).
Editer: Si vous voulez que ce soit 10,9, ... 1 Personnellement, je changerais simplement les critères pour trier dans l'ordre croissant. L'ordre sera 1 ..., mais l'effet 9,10 est le même:
crit.addOrder(Order.asc("empno"));
Si vous voulez vraiment être 10,9, ... 1 vous pouvez ajouter procédez comme suit si elle devient plus dépendante des données que vous avez. Tout dépend de ce que vous essayez de faire avec les données, mais ceux-ci devraient vous mettre sur la bonne voie.
Critieria crit = session.createCriteria(Employee.class);
crit.addOrder(Order.desc("empno");
crit.setFirstResult(10);
crit.setMaxResults(10);
List<Employee> emps = crit.list();
Quelle est la pertinence de DB2 par rapport à la question? – skaffman
@Skaffman: Oui, il est lié à la base de données Db2. – user569125
La requête fait exactement ce que vous lui demandez dans DB2: vous lui demandez de commander les employés par empno et ensuite sélectionnez les 10 premiers qui seraient 20, 19 ... 11. Quelles sont vos questions exactement? Voulez-vous une requête qui renvoie 10,9, ... 1? Avez-vous eu besoin de le convertir en une requête Hibernate Criteria? –