이거 때문에 진땀을 쏟았다……

검색 결과도 거의 없고…

프로젝트에서 JPA 를 사용하는데 여러 조건의 다수의 컬럼들을 가져올 경우가 있어,

nativeQuery 를 사용해야 하는 상황이었다.


public interface FavorRepository extends JpaRepository<Favor, Long> {

    @Query(value = "select f.place_id, count(*) as CNT " +
            "from favor f " +
            "where f.status = 1 " +
            "group by f.place_id " +
            "order by CNT desc LIMIT 10;", nativeQuery = true)
    List<HashMap<Object, Object> findFavorRank();
}

다수의 컬럼을 가져올 때 해당 컬럼들은 dto 에도 매핑되지 않는 값 일 때가 있다.

단순히 hashMap 으로 가져오면 되겠다고 생각했지만

org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap 와 같은 오류가 발생하게 되었다.

구글링을 해보면 이런 경우 매핑 받고자 하는 컬럼들을 아래와 같이 interface 로 받아오라는 말들이 많았다.

ex) 매핑하고자 하는 컬럼명이 place_id 인 경우에는 getPlaceId();