Programming-[Backend]/Spring
[TIL]PageableDefault는 non-deterministic sort를 한다
컴퓨터 탐험가 찰리
2022. 4. 4. 12:10
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를 추가해주는 방법이 있다.
참조
728x90
반응형