에러 - org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.query.sqm.UnknownPathException

박상훈·2024년 8월 29일

에러 로그

목록 보기
11/13

상황

API 테스트를 하던 도중 제목과 같은 오류가 발생하였다. 조사 결과 처음에는 쿼리문 작성에 있어 오류가 있는줄 알았다. 'userId' 필드를 찾을 수 없다는 오류가 발생했다.

	@Query("SELECT a FROM AiChat a WHERE a.user.userId = :userId AND a.isDeleted = false")
    Page<AiChat> findChatForAUser(@Param("userId") Long userId, Pageable pageable);

그러나 해당 필드는 외래키를 통해 제대로 참조되고 있었다.

그렇다면 왜 오류가 나게 된걸까?


원인 및 해결 방법

위와 같이 GET 요청을 보냈을 때 오류가 발생하였다. 정렬 기준(sort)이 userId로 되어있는 것을 확인할 수 있다.

  • 페이지 객체로 반환될 entity에는 user라는 필드가 다대일로 매핑되어있고, userId는 존재하지 않는다. 이 때문에 오류가 발생한 것이다.

  • entity에 존재하는 필드 이름을 넣어 정렬 기준으로 정해주면 응답이 잘 돌아오는 것을 확인할 수 있다.

profile
안녕하세요

0개의 댓글