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

mindone님의 프로필 이미지
mindone

작성한 질문수

실전! Querydsl

동일 entity , table 다중 leftJoin시 방법

작성

·

9.4K

4

안녕하세요 강의 잘듣고 있습니다. 강의를 따라서 실무에 적용하려고 하는데 어려움이 생겨 질문드립니다. 

공통 코드성 테이블(CM_CDE)를 이용하려고 하는데  어떻게 이용하는지 몰라 여쭙니다. 

Q >>  leftJoin을 같은 entity, 테이블로 두번 조인을 할려고 합니다.

CM_CDE로 조건값을 다르게하고 두번 조인하려고 하는데 상위의 조건값(civPetTyp) 하나만 조인이 됩니다. 

두번 하는 방법이 있을까요? 

[[현재  작성문]]

[[결과 쿼리]]

[[원하는 쿼리형태]]

       select
            cmpt0_.CMPT_SN as col_0_0_,
            cmpt0_.CIV_PET_TYP as col_1_0_,
            cmpt0_.RCP_TYP as col_2_0_,
            cnstldg1_.CNT_NAM as col_3_0_,
            cnstdre3_.DRE_WRK_AMT as col_4_0_,
            code4_.CDE_NAM as col_5_0_,
            code5_.RSRV02 as col_6_0_ 
        from
            MG_CMPT_MNG cmpt0_ 
        left outer join
            MG_CNST_LDG cnstldg1_ 
                on cmpt0_.CNT_SN=cnstldg1_.CNT_SN 
        left outer join
            MG_CMPT_FTR cmptftr2_ 
                on (
                    cmpt0_.CMPT_SN=cmptftr2_.CMPT_SN
                ) 
        left outer join
            MG_CNST_DRE cnstdre3_ 
                on (
                    cnstldg1_.CNT_SN=cnstdre3_.CNT_SN
                ) 
        left outer join
            CM_CDE code4_ 
                on (
                    code4_.CDE=cmpt0_.CIV_PET_TYP 
                    and code4_.GRP_CDE='CMP_ACTY_CDE'
                )
				left outer join
            CM_CDE code5_ 
                on (
                    code5_.CDE=cmpt0_.TRT_ARA 
                    and code5_.GRP_CDE='HJD_CDE'
                )

답변 2

4

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

안녕하세요. mindone님

Querydsl에서 Q클래스를 직접 생성할 일이 거의 없는데, 딱 이럴 때 다음과 같이 다른 별칭을 주고 생성하면 됩니다^^

QCat cat = QCat.cat;
QCat mate = new QCat("mate");
QCat kitten = new QCat("kitten");
queryFactory.selectFrom(cat)
    .innerJoin(cat.mate, mate)
    .leftJoin(cat.kittens, kitten)
    .fetch();

출처: http://www.querydsl.com/static/querydsl/4.1.3/reference/html_single/

도움이 되셨길 바래요.

1

mindone님의 프로필 이미지
mindone
질문자

와 역시!!!! 너무 감사합니다  큰 도움이 됩니다 ^_^

mindone님의 프로필 이미지
mindone

작성한 질문수

질문하기