2012-05-10 13 views
63

Sto provando Spring data JPA nel mio progetto. Voglio sapere se esiste un'API pronta all'uso per eseguire query sui dati, sia da Sort sia da Pageable. Certo, so che posso scrivere quel metodo da solo, voglio solo sapere se c'è uno fuori dalla scatola. Il mio DAO estende JpaRepository, e ho trovato vi sono le seguenti metodi posso invocare:Come interrogare i dati out of the box utilizzando i dati Spring JPA con Sort e Pageable?

findAll(); 
findAll(Pageable pageable); 
findAll(Sort sort); 

Ma non c'è tale metodo come findAll(Sort sort, Pageable pageable), quindi sono curioso.

risposta

134

Ci sono due modi per raggiungere questo obiettivo:

final PageRequest page1 = new PageRequest(
    0, 20, Direction.ASC, "lastName", "salary" 
); 

final PageRequest page2 = new PageRequest(
    0, 20, new Sort(
    new Order(Direction.ASC, "lastName"), 
    new Order(Direction.DESC, "salary") 
) 
); 

dao.findAll(page1); 

Come si può vedere la seconda forma è più flessibile in quanto consente di definire direzione diversa per ogni proprietà (lastName ASC, salary DESC).

+3

Il passaggio di più colonne per l'ordinamento dei dati da Javascript tramite un controllo REST può essere effettuato con i seguenti dati Javascript: ['name, asc', 'location, desc'] – Stephane

+0

Grazie per la risposta e mi ha aiutato! Potresti cambiare ordine per ordinare? È Sort in Spring data. – curious1

+3

Questa era la mia soluzione tuttavia in primavera è: Pageable pageable = new PageRequest (0, 20, new Sort (new Sort.Order (Direction.ASC, "name"), new Sort.Order (Direction.DESC, "salary"))); – Simon

12

Pageable ha un'opzione per specificare l'ordinamento. Dal java doc

PageRequest(int page, int size, Sort.Direction direction, String... properties) 

Crea un nuovo PageRequest con parametri di riordino applicati.

+2

In questo modo si imposta una direzione di ordinamento per tutte le proprietà. Se si desidera differenziare la direzione di ordinamento per proprietà, è necessario utilizzare l'oggetto Sort come indicato da Tomasz. – Mariusz

Problemi correlati