2015-05-27 17 views
8

Sto utilizzando gli archivi Spring Data senza problemi. Quando ho provato ad aggiungere Paging (usando l'interfaccia Pageable) ha funzionato OK.Spring Data Hibernate + Pageable: restituisce risultati vuoti

Tuttavia, quando il set di risultati restituito è inferiore alla dimensione della pagina, il risultato è Elenco vuoto.

Quello che segue è il mio PageRequest. I valori predefiniti per index e objectsPerPage sono 0 e 10 rispettivamente.

new PageRequest(pageIndex_, objectsPerPage_, new Sort(orders)) 

Quando lo utilizza con una query che restituisce meno di 10 risultati, l'elenco risultante è vuoto.

Questo è come io uso il repository nel livello di servizio:

repository.findAll(MySpecification.searchClients(criteria), 
      myPagingSpecification(criteria.getPageIndex(), criteria.getNumberPerPage(), null)) 
      .getContent(); 

EDIT 1 ho trovato la causa di questo, comunque sto ancora cercando una soluzione o una soluzione.

 Long total = QueryUtils.executeCountQuery(getCountQuery(spec)); 
    List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList(); 

Questo codice, che si trova nella classe SimpleJpaRepository rende select count... e se il numero è inferiore l'offset, restituisce una lista vuota.

risposta

3

Secondo PageRequest realizzazione:

public int getOffset() { 
    return page * size; 
} 

quindi se si imposta page-0 il valore offset deve essere anche 0 e non può essere più grande di total (se total > 0).

Check (forse in debugger) che cosa pageIndex valore si passa alla primavera-dati. Potrebbe essere un altro valore - a volte è un semplice errore.

+4

Grazie. Il problema era che il parametro Query dei miei servizi REST era 'page = 1' e avevo dimenticato che le pagine sono basate su 0, ma la mia API no. –

Problemi correlati