web-dev-qa-db-fra.com

Changer l'ordre de tri par défaut pour la méthode Spring Data findAll ()

J'utilise Spring Data JPA et je me demande s'il est possible de modifier l'ordre de tri par défaut pour une entité utilisée par la méthode Spring Data findAll()?

12
Marcel Overdijk

Vous devriez pouvoir le faire soit:

dans spring-data 1.5+, en remplaçant la méthode findAll () dans votre interface, en ajoutant l'annotation @Query et en créant une requête nommée dans votre classe Entity, comme ci-dessous, par exemple:

Entité

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

}

Dépôt

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

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

ou,

en créant une implémentation de référentiel personnalisé:

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

3
Alan Hay

Vous pouvez y parvenir comme suit:

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

Une autre façon de faire la même chose. Utilisez le nom de méthode ci-dessous:

findByOrderByIdAsc()
25
Mithun

Utilisez plutôt un PagingAndSortingRepository . Ceci vous permet d'ajouter un paramètre Queryparameter? Sort =,

Dépôt:

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

Demande GET:

localhost:8080/users?sort=name,desc
1
Matthias