2015-03-13 12 views
9

Utilizzo Spring Data JPA e mi chiedo se è possibile modificare l'ordinamento predefinito per un'entità utilizzata dal metodo Spring Data findAll()?Modifica l'ordinamento predefinito per il metodo findAll() Spring Data

+0

scrivere la propria interrogazione JPA per questo. –

+0

@Andrei si ma vorrei evitarlo se possibile. –

+0

Il findAll non ha alcun ordine applicato. Se vuoi cambiare questo, dovresti estendere 'SimpleJpaRepository' e sovrascrivere il metodo' findAll'. Vedi la sezione su [Aggiungere un comportamento personalizzato a tutti i repository] (http://docs.spring.io/spring-data/jpa/docs/1.7.2.RELEASE/reference/html/#repositories.custom-behaviour-for- all-repository). Puoi anche usarlo per sovrascrivere il comportamento predefinito. –

risposta

2

si dovrebbe essere in grado di eseguire questa operazione:

in 1.5 + primavera-dati, sovrascrivendo il metodo findAll() nell'interfaccia, aggiungendo l'annotazione @query e la creazione di una query di nome nella classe di entità come, per esempio, di seguito:

Entity

@Entity 
@NamedQuery(name = "User.findAll", query="select u from User u order by u.address.town") 
public class User{ 

} 

Repository

public interface UserRepository extends ... <User, Long> { 

    @Override 
    @Query 
    public Iterable<User> findAll(); 
} 

o,

con la creazione di un'implementazione repository personalizzato:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

19

È possibile raggiungere questo come segue:

dao.findAll(new Sort(Sort.Direction.DESC, "<colName>")); 

Un altro modo per ottenere lo stesso. Utilizzare il nome del metodo seguito:

findByOrderByIdAsc() 
+0

Sì, questa sarebbe un'opzione. Tuttavia, mi piacerebbe che il metodo findAll() standard usasse un ordine specifico. Il motivo è che sto usando anche @Cacheable. –

+0

Potresti provare questo nome di metodo - 'findByOrderByIdAsc()' – Mithun

+0

Sì, ho capito che posso usare questo. Ma mi chiedo se sia possibile in generale impostare l'ordinamento predefinito per l'entità. Non credo. –

0

Utilizzare un PagingAndSortingRepository invece. Con questo in luogo è possibile aggiungere un queryparameter sorta =,

Repository:?

public interface UserRepository extends PagingAndSortingRepository<User, Long> { 
    //no custom code needed 
} 

richiesta GET:

localhost:8080/users?sort=name,desc 
Problemi correlati