[Spring JPA] JPQL, QueryDsl 인라인뷰(조인 안에 서브쿼리) 문제
2022. 5. 23. 09:58ㆍWeb/spring-boot
- 현재 JPQL, QueryDsl 에서는 인라인뷰 구현이 힘들다.
- 하지만 현재 개발하던 프로젝트 중 Join 문 안에 서브쿼리를 구현해야하는 일이 생겨서 이렇게 해결방법을 기록해봅니다.
- 제가 아는 방법에서는 인라인뷰를 해결하는 방법은 MyBatis를 사용해 네이티브쿼리를 쓰는 방법과
다음으로 제가 적용해본 @Subselect 어노테이션을 사용하는 방법을 적어볼까합니다.
- 저는 어떻게든 QueryDsl에서 서브 쿼리를 사용해서 문제를 해결 할수 없을까 하다가
마치 가상 테이블(view)처럼 사용할 수 있는 Entity에 맵핑할 쿼리를 직접 작성하였습니다.
@Immutable : update될 수 없는 select용 엔티티를 선언해준다.
@Subselect : select문을 적어 가상의 뷰 Entity를 만들어준다.
@Synchronize : 싱크로나이즈 할 테이블을 설정해준다.
- 이렇게 하면 @Subselect에 작성된 쿼리 결과로 엔티티에 맵핑되게 된다.
이다음 join에 아까 작성한 Entity를 넣어주면 QueryDsl 로 인라인뷰가 해결된것을 알수있다.
- 네이티브 쿼리로 MyBatis를 활용하는 방법도 있겠지만 QueryDsl로 구현하는방법도 있다는 것을 알게되었다.
'Web > spring-boot' 카테고리의 다른 글
[SPRING CLOUD] Config 서버 구축하기 (1) | 2022.08.25 |
---|---|
[SPRING] 마이크로서비스(MSA) 간 통신방법 (0) | 2022.08.10 |
[Spring] GraphQL 적용해보기(io.leangen.graphql) (0) | 2022.06.08 |
[Spring] WebSocket & STOMP 를 이용하여 채팅 고도화하기 (0) | 2022.06.08 |
[Spring] WebSocket을 이용하여 채팅 구현해보기(기초) (0) | 2022.06.03 |