본문 바로가기
BackEnd/SQL

[Oracle/JPA] Pagination Fetch 구문 에러

by Chaedie 2023. 7. 9.
728x90

ORACLE 11g 버젼을 활용한 팀프로젝트를 Spring Boot Data JPA 프로젝트로 마이그레이션 해보는중이다.

마이그레이션을 하는 이유는 기존 요구사항들과 DB를 유지한채로 Framework, Library 등의 사용법을 간단하게 익히고 빠르게 적용해보고 싶기 때문...

Fetch 구문 에러


    @Override
    public List<CustomerResponseDTO> findAll(PaginationDTO paginationDTO) {
        Integer pageNumber = Optional.ofNullable(paginationDTO.getPage()).orElse(0);
        Integer size = Optional.ofNullable(paginationDTO.getSize()).orElse(10);
        Sort sort = Sort.by(Sort.Direction.DESC, "cId");

        Pageable pageRequest = PageRequest.of(pageNumber, size, sort);
        Page<Customer> customerPage = customerDAO.findAll(pageRequest);
        System.out.println("customerPage = " + customerPage);

        return null;
    }

위와 같은 형태로 개발을 하고 데이터를 잘 가지고 오는지 확인을 해봤는데, 아래와 같은 에러가 계속 발생하더라.

oracle.jdbc.OracleDatabaseException: ORA-00933: SQL command not properly ended

sqlDeveloper에서 동일한 쿼리를 날려보니 역시 fetch 문이 적용이 되지 않았고, 검색해보니 12g 버젼부터 지원되는 구문이라고 한다. 페이지네이션 기능에서 해당 쿼리 하나 때문에 1시간 가량을 삽질한 것 같다.ㅎㅎ


해결 방법

JPA에서 제공하는 Pagination을 사용하지 못한다면... Native Query를 사용해서 해결해야 할것 같다. native Query를 사용해도 PageCount정보 등이 같이 있음 좋겠는데... 한번 해보고 와야겠다.

댓글