• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.06.10 20:31 작성 조회수 433

0

안녕하세요.

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

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

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

감사합니다.

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2023.06.12

안녕하세요. 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();

 

감사합니다.