인프런 커뮤니티 질문&답변

chaerin920님의 프로필 이미지
chaerin920

작성한 질문수

실전! Querydsl

동적 쿼리와 성능 최적화 조회 - Where절 파라미터 사용

혹시 join 자체도 특정 조건에 따라 동적으로 작용되게 할 수 있나요?

작성

·

861

0

안녕하세요.

where 조건을 동적으로 생성해주는 부분에 대해서는 충분히 이해가 되었습니다.

그런데 혹시 특정 condition 값에 따라 join을 해줘야하는 테이블이 다른 경우라면 어떻게 처리되어야 할지 모르겠어서 글을 남기게 되었습니다.

condition조건에 teamName이 있을 때만 team을 조인해주고 싶은데 join 구문을 동적으로 처리할 수 있는 좋은 방법이 어떤 것인지 질문드립니다. 😭

감사합니다.

답변 1

1

안녕하세요. chaerin920님, 공식 서포터즈 OMG입니다.

querydsl의 장점은 method chaining이 가능하다는 점으로 아래와 같이 조인 하는 코드에 조건을 두는 방식을 참고하시면 될 것 같습니다 :)

 

JPAQuery<MemberTeamDto> query = queryFactory
    .select(new QMemberTeamDto(
        member.id,
        member.username,
        member.age,
        team.id,
        team.name))
    .from(member);

if (hasText(condition.getTeamName())) {
    query.leftJoin(member.team, team);
    builder.and(team.name.eq(condition.getTeamName()));
}

query.where(builder);

return query.fetch();

 

감사합니다.

chaerin920님의 프로필 이미지
chaerin920

작성한 질문수

질문하기