• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

컬럼조회 질문

21.12.15 13:50 작성 조회수 134

0


강의 진행후 토이프로젝트 진행중에 질문이 있어 여쭤봅니다.

제가 하고싶은 조회는

- 로그인한 멤버가 (memberId 조인)
- 소속한 팀의 (teamId 조인)
- 모든 대화방(Room)과 각 대화방에 참여한 모든 멤버(Room_member)를 조회 하고싶습니다.

public List<Room> findRoomsByTeamId(Long memberId, Long teamId) {
return em.createQuery("select distinct r from Room r" +
" join fetch r.team t" +
" join fetch r.roomMembers rm" +
" join fetch rm.member m" +
" where t.id = :teamId" +
" and m.id = :memberId"
,Room.class )
.setParameter("teamId", teamId)
.setParameter("memberId", memberId)
.getResultList();
}

조인을 이렇게 실행했는데, 문제점이 memberId가 걸려있기 때문에, 대화방에 소속된 다른 멤버가 조회가 되지않습니다. (본인만 조회됨)

memberId를 조인하지 않으면, 대화방에 소속된 멤버가 모두 나오지만

본인이 속하지 않은 대화방도 모두 조회 됩니다...


제가 생각하는 해결방안으로는 서브쿼리를 사용하는것인데,, JPA로도 가능한가요?
아니면 다른 해결 방법이 있을까요?

 
 
 
ㅁㄴㅁㄴㅇㅁㄴ

답변 1

답변을 작성해보세요.

0

안녕하세요. 김진영님

쿼리를 2번으로 나누어서 실행하거나, 네이티브 쿼리를 사용해서 서브쿼리를 사용하시면 될 것 같아요.

감사합니다.