스프링 부트 프로젝트 중 발견한 CRITICAL ISSUE : 꼼꼼기록😱

Yunny.Log ·2022년 7월 6일
0

Spring Boot

목록 보기
71/80
post-thumbnail

😱

문제상황

  • 분명 현재 진행 중인 라우트 프로덕트가 거절된 상태라서, 로그에 거절됐었냐!!!!! 라는 문장이 찍히고 true 로 나와야 하는데, 거절됐다구 나오지 않는 것이다~~

  • 그러던 중 routeProductList를 한번 찍어보니 두두둥 , 리스트 안에 아이디 값으로 자동으로 오름차순 되는 줄 알았는데 아니었음

  • 저런 상태에서 여섯번째 아이를 데려오라고 하니 엉뚱한 1748 을 데리고 오는 것이다,

  • 내가 생각한 로직은 쟤네를 오름차순으로 정렬해놓은 것에서 6번째 아이를 데려오는 것이었구!!


자자 로직 변경 입장~~

  • 기존 ROUTEORDERING 에서 ROUTEPRODUCT 를 찾을 때
 List<RouteProduct> findAllByRouteOrdering
 (@Param("routeOrdering")RouteOrdering routeOrdering);

걍 이렇게 리스트 반환받아서, 그 중에서 present 인 애를 현재 작동 routeProduct로 지정

BUT! PRESENT는 저 리스트가 오름차순 정렬인 경우에만 유효한 로직 !!!

따라서 @Query 문을 통해서 오름차순으로 자리잡게 만듦

    @Query("select c from RouteProduct c " +
            "where c.routeOrdering = :routeOrdering " +
            "order by c.id asc nulls first, c.id asc")
    List<RouteProduct> 
    findAllByRouteOrdering(@Param("routeOrdering")RouteOrdering routeOrdering);

  • 이 로직을 아주아주 다양한 곳에서 사용 중이었는데 QA 전 잡아서 다행이다!

  • 로직을 꼼꼼히 보고 설계하도록 하자! ㅠㅠ 반성 반성 JPA 에서 findAll 할 때 자동으로 오름차순으로 오는 것이 아니지~

0개의 댓글