복붙노트

[SPRING] Spring 데이터의 기본 정렬 순서 변경 findAll () 메서드

SPRING

Spring 데이터의 기본 정렬 순서 변경 findAll () 메서드

Spring Data JPA를 사용하고 있는데 Spring 데이터 findAll () 메소드에서 사용중인 엔티티의 기본 정렬 순서를 변경할 수 있는지 궁금합니다.

해결법

  1. ==============================

    1.다음 중 하나를 통해이 작업을 수행 할 수 있습니다.

    다음 중 하나를 통해이 작업을 수행 할 수 있습니다.

    인터페이스에서 findAll () 메서드를 재정의하고 @Query 주석을 추가하고 아래 예와 같이 Entity 클래스에서 명명 된 쿼리를 만드는 스프링 데이터 1.5+

    실재

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

    저장소

    public interface UserRepository extends ... <User, Long> {
    
        @Override
        @Query
        public Iterable<User> findAll();
    }
    

    또는,

    커스텀 리포지터리 (repository)의 구현을 작성합니다.

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

  2. ==============================

    2.다음과 같이이 작업을 수행 할 수 있습니다.

    다음과 같이이 작업을 수행 할 수 있습니다.

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

    같은 달성하기위한 또 다른 방법. 아래 메소드 이름을 사용하십시오.

    findByOrderByIdAsc()
    
  3. ==============================

    3.대신 PagingAndSortingRepository를 사용하십시오. 그 자리에 당신 queryparameter 추가 할 수 있습니다? sort =,

    대신 PagingAndSortingRepository를 사용하십시오. 그 자리에 당신 queryparameter 추가 할 수 있습니다? sort =,

    저장소:

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

    GET 요청 :

    localhost:8080/users?sort=name,desc
    
  4. ==============================

    4.findAll () jpa 쿼리에 사용자 정의 쿼리를 추가하려면 다음과 같이하면됩니다.

    findAll () jpa 쿼리에 사용자 정의 쿼리를 추가하려면 다음과 같이하면됩니다.

    여기 내 기본 주문을 변경했습니다.

    내 기본 순서에 따르면 기본 키는 이드입니다.

    하지만 지금은 기본 주문을 변경하기 위해 id_order를 설정합니다.

    모델 클래스

    @Entity
    @Table(name = "category")
    @NamedQuery(name = "Category.findAll", query="select u from Category u order by 
    u.id_order")
    public class Category {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String nameEn;
    private String nameSi;
    private String nameTa;
    private Integer id_order;
    

    저장소 클래스

    import com.model.Category;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.CrudRepository;
    
    import java.util.List;
    
    public interface CategoryRepository extends CrudRepository<Category, Integer> {
    
    @Override
    @Query
    public Iterable<Category> findAll();
    
  5. from https://stackoverflow.com/questions/29031028/change-default-sort-order-for-spring-data-findall-method by cc-by-sa and MIT license