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

칼칼한칼리님의 프로필 이미지
칼칼한칼리

작성한 질문수

실전! Querydsl

조인 - 페치 조인

페치조인 질문입니다.

작성

·

245

0

안녕하세요 개인프로젝트를 하다가 궁금한게 생겨서 질문드립니다!

궁금한 것은 페치조인시 조인할 엔티티의 전부가 아닌 일부분만 조인할 수 있나? 입니다. 

일반적으로 페치조인을 사용하면  팀(영상기준) 엔티티의 전부가 조인되는데 만약 팀 엔티티의 name만 사용하고 싶을때 그부분만 패치조인을 사용할 수 있을까요?

 

 

java

QueryResults<Recipe> recipeQueryResults = queryFactory
                .selectFrom(recipe)
                .join(recipe.member, member).fetchJoin()
                .offset(page*10)
                .limit(pageable.getPageSize())
                .fetchResults();

Hibernate 

Hibernate: 
    select
        recipe0_.recipe_id as recipe_i1_2_0_,
        member1_.member_id as member_i1_1_1_,
        recipe0_.created_date as created_2_2_0_,
        recipe0_.modified_date as modified3_2_0_,
        recipe0_.content as content4_2_0_,
        recipe0_.member_id as member_i6_2_0_,
        recipe0_.title as title5_2_0_,
        member1_.created_date as created_2_1_1_,
        member1_.modified_date as modified3_1_1_,
        member1_.email as email4_1_1_,
        member1_.name as name5_1_1_,
        member1_.password as password6_1_1_,
        member1_.role as role7_1_1_,
        member1_.user_id as user_id8_1_1_ 
    from
        recipe recipe0_ 
    inner join
        member member1_ 
            on recipe0_.member_id=member1_.member_id

 

혹시나 제 설명이 이상할까봐 덧붙입니다.. 예를 들어서 위 코드에서는 member의 전부를 페치조인하지만 만약 member의 name만 페치조인 할 수 있는지에 대한 질문입니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 이호석님

페치 조인은 엔티티 자체를 조인하는 기능입니다.

원하시는 기능을 처리하려면 일반 조인을 사용하고, select에서 원하는 데이터를 지정해서 DTO로 조회하시면 됩니다.

감사합니다.

칼칼한칼리님의 프로필 이미지
칼칼한칼리

작성한 질문수

질문하기