개발/JPA
[JPA] @Query 어노테이션을 이용하여 nativeQeury 작성(jpa 에서 group by 사용하기)
당다라딩디리
2022. 1. 4. 16:04
반응형
- 나의 상황
select crl
from ra_crl
where (elector_group_id, crl_version)
in (
select elector_group_id, max(crl_version) as crl_version
from ra_crl
group by elector_group_id
)
이런 쿼리를 jpa로 작성해야했음. 근데 jpa 는 group by 를 지원하지않음.
- 해결
Repository 에서 @Query 어노테이션을 이용하여 직접 쿼리를 작성하며, nativeQuery = true 를 추가해줘야함.
주의사항으로는 컬럼명을 entity에 정의한대로 쓰지 못하고 실제 db의 컬럼명을 사용해야하며 return 결과도 entity로 바로 받지 못한다.
예를들어 조회해오는 항목이 둘 이상이면 Object[] 를 사용하여 순서대로 하나씩 꺼낼 수 있다.
@Query(value="select ctl from ra_ctl where (elector_group_id, seq_num) in (select elector_group_id, max(seq_num) as seq_num from ra_ctl group by elector_group_id)", nativeQuery = true)
List<String> getCtl();
반응형