Spring Data JPA Java - get 10 Derniers dossiers à partir d'une requête
Est-il un moyen de récupérer la dernière X nombre de résultats d'une requête?
Par exemple - Si vous voulez les dix premiers résultats, je vois que l'exemple fonctionne ici: setMaxResults pour le Printemps-Data-JPA annotation?
public interface UserRepository extends Repository<User, Long> {
List<User> findByUsername(String username, Pageable pageable);
}
//and then I could call it like this
Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);
Mais comment puis-je obtenir les dix DERNIERS dossiers?
La seule façon que je pouvais penser de le faire serait de renverser l'ordre dans la requête (findByUsernameDesc, en supposant que des résultats originaux ont été ascendant), puis parcourir la liste vers l'arrière afin que je puisse les traiter dans l'ordre que je voulais (ascendant).
Qui semble comme une vilaine façon de le faire. Est-il un moyen d'avoir la requête de me donner le dernier X résultats dans l'ordre que je veux?
OriginalL'auteur headlikearock | 2014-06-05
Vous devez vous connecter pour publier un commentaire.
La question est de savoir comment efficace, elle serait sur option, surtout contre les gros ensembles de données.
Je pencherais pour un descendant de l'index, que j'ai pu requête à l'aide de la maxResult de soutien, comme vous l'avez déjà compris.
C'est pas un hack. Si vous étiez pour correspondre à 100 M seulement les résultats pour obtenir le dernier X, cette méthode donnerait les meilleurs résultats.
OriginalL'auteur Vlad Mihalcea
Spring Data JPA 1.7 a introduit "haut" et "premier" comme mots clés dans la dérivée de requêtes ainsi, nous pouvons maintenant faire comme:
Check it out - Le printemps de la publication des Données du Train Evans Va GA
OriginalL'auteur Rafael Rocha
PageRequest pourrait être extrêmement utile pour elle. Il existe de nombreuses options pour construire le PageRequest.
Donc, une option possible est:
J'utilise aussi sans paramètres (conditions au sujet de l'objet).
Et appel:
OriginalL'auteur leandrobh
Vous pouvez faire pour obtenir les 10 derniers enregistrements filtre par le nom d'utilisateur:
Avec OrderByIdDesc ce sera la dernière enregistrements.
OriginalL'auteur freemanpolys
La seule autre façon que je peux penser de le faire (autre que par la commande de la première), serait d'obtenir le nombre total d'enregistrements et ensuite utiliser set max les résultats et fixer des premiers résultats.
Je ne sais pas le printemps-data-jpa, mais il devrait avoir un ensemble firstresult sur la requête en tant que bien.
OriginalL'auteur bradleyfitz