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
risposta
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:
È 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()
Sì, questa sarebbe un'opzione. Tuttavia, mi piacerebbe che il metodo findAll() standard usasse un ordine specifico. Il motivo è che sto usando anche @Cacheable. –
Potresti provare questo nome di metodo - 'findByOrderByIdAsc()' – Mithun
Sì, ho capito che posso usare questo. Ma mi chiedo se sia possibile in generale impostare l'ordinamento predefinito per l'entità. Non credo. –
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
scrivere la propria interrogazione JPA per questo. –
@Andrei si ma vorrei evitarlo se possibile. –
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. –