99 votes

Quelle est l'alternative de la clause LIMIT dans JPQL ?

Je travaille avec des requêtes PostgreSQL implémentées dans JPQL.

Voici un exemple de requête psql native qui fonctionne bien,

SELECT * FROM students ORDER BY id DESC LIMIT 1;

La même requête en JPQL ne fonctionne pas,

@Query("SELECT s FROM Students s ORDER BY s.id DESC LIMIT 1")

Students getLastStudentDetails();

Il semble que la clause LIMIT ne fonctionne pas dans JPQL.

Selon la documentation JPA, nous pouvons utiliser setMaxResults/setFirstResult Quelqu'un peut-il me dire comment je peux l'utiliser dans ma requête ci-dessus ?

0 votes

@NeilStockton ok, j'étais un peu confus à ce sujet, maintenant comment utiliser setMaxResults/setFirstResult dans ma requête jpql ci-dessus ?

2 votes

J'ai utilisé ceci qui a également fonctionné pour moi @Query(value = "SELECT * FROM students ORDER BY id DESC LIMIT 1", nativeQuery = true) Object getLastStudentDetails();

1 votes

Non. Vous n'êtes pas obligé d'utiliser une requête native. Lisez les questions-réponses liées ! !!

3voto

thusharaK Points 765

Coder en dur la pagination( new PageRequest(0, 1) ) pour ne récupérer qu'un seul enregistrement.

    @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
    @Query("select * from a_table order by a_table_column desc")
    List<String> getStringValue(Pageable pageable);

vous devez passer new PageRequest(0, 1) pour récupérer les enregistrements et de la liste, récupérez le premier enregistrement.

1voto

Rajib Das Gupta Points 11

Vous pouvez utiliser quelque chose comme ça :

 @Repository
 public interface ICustomerMasterRepository extends CrudRepository<CustomerMaster, String> 
 {
    @Query(value = "SELECT max(c.customer_id) FROM CustomerMaster c ")
    public String getMaxId();
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X