반응형
- 나의 상황
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();
반응형
'개발 > JPA' 카테고리의 다른 글
[JPA] @Query 로 직접 쿼리 작성하기 (2) | 2021.12.10 |
---|---|
[JPA] Unable to locate Attribute with the the given name [column] on this ManagedType ..어쩌구..저쩌구.. (0) | 2021.11.30 |
[JPA] entity 에서 DB의 column으로 쓰고 싶지 않은 변수 처리! @Transient (1) | 2021.11.11 |