Récupérer uniquement le premier/dernier élément à l'aide de Spring Data JPA et @Requête d'annotation

EDIT: des Solutions à ce problème sont fournis dans la deuxième et la quatrième réponse concernant cette question setMaxResults pour le Printemps-Data-JPA annotation?

Objectif: aller Chercher le plus grand/plus petit élément d'une propriété à z à l'aide d'un Spring Data JPA référentiel et le Ressort de la Requête d'annotation.

Ce que j'ai jusqu'à présent

@Query("SELECT xelement FROM x xelement ORDER BY xelement.z")
public List<X> findFirstElement();

Problème: Cette requête extrait tous les éléments (ce qui n'est pas vraiment efficace). Si je voudrais utiliser l'EntityManager directement, j'ai pu définir le nombre de résultats à l'aide

entityManager.setMaxResults(1)

pour obtenir uniquement le premier élément.

Question: Comment puis-je spécifier le nombre maximum de résultats à l'aide de la @Requête annotation?

Idée: Est à l'aide d'un PageRequest de la taille 0 à l'aller?

Contraintes: je suis conscient de la "FindFirstBy...." fonction de requête, mais je veux/dois utiliser la @Query annotation.

  • Pourquoi est-ce que votre méthode de retour List<X> lorsqu'il est prévu qu'à retourner d'un seul élément? Si la requête est vraiment aussi simple que cela, vous pouvez éviter d'utiliser @Query et tout simplement findFirstOrderByZ(). Sinon, vous devrez utiliser le LIMIT mot-clé pour limiter le nombre d'enregistrements renvoyés SELECT x FROM xelement x ORDER BY x.z LIMIT 1.
  • 1. concernant la Liste des<X>, c'était juste pour être suffisamment souple dans le cas où je changerais d'un nombre arbitraire d'éléments, mais oui, en principe, vous avez raison, en retournant une liste est exagéré dans ce cas. 2. Quant à la "findFirst.." --> voir les contraintes. 3. Êtes-vous sûr que la limite de mot-clé est disponible en JPQL? Je suppose que je dois vérifier .... J'ai aussi trouvé stackoverflow.com/questions/9314078/... qui assez bien résout le problème.
  • Trouvé ceci pour être couverts par les deuxième et quatrième réponse à [stackoverflow.com/questions/9314078/... [1]: stackoverflow.com/questions/9314078/...
  • Double Possible de setMaxResults pour le Printemps-Data-JPA annotation?
  • S'il vous plaît ne pas se référer à des réponses par leur ordre dans la liste. Cet ordre change. S'il vous plaît lien directement vers les réponses.