본문 바로가기
관리자

Programming-[Backend]/Spring

[TIL]PageableDefault는 non-deterministic sort를 한다

728x90
반응형

SpringData에서 사용하는 @PageableDefault는 non-deterministic sort를 발생시킨다.

따라서 사용을 자제하는 것이 좋은 것 같다. 경우에 따라서는 편하거나, 다른 방법이 있을수도 있지만...

 

용법

public PageRm<XxxRm> getXxxList(
        @PageableDefault(size = 25) final Pageable pageable,
        @Valid XxxPo xxxPo) {

    return something...;
}

 

현상 및 원인

@PageableDefault를 적용하면 1개 항목에 대해서만 sort를 하도록 되어있기 때문이다.

(아래 사진 및 참조 1)

 

따라서 10개의 컬럼이 있는 리스트인데, 예를 들어서 name.asc로 정렬을 했다면 name으로 정렬하고 나머지 다른 컬럼들은 어떤 기준으로 정렬해야할지 모르기 때문에 나머지 항목들은 임의로 정렬이 되는 문제가 발생할 수 있다.(non-deterministic sort)

 

해결방법

Primary한(Unique) key 값으로 추가적으로 orderBy를 추가해주는 방법이 있다.

 


참조

1. https://dar0m.tistory.com/61

728x90
반응형