• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

페치조인 질문입니다.

21.12.31 17:20 작성 조회수 168

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로 조회하시면 됩니다.

감사합니다.