프로젝트 QueryDsl Gradle 설정
▶ SELECT 에서의 서브 쿼리의 사용 방법
ExpressionUtils.as(~) 부분이 서브 쿼리로 작성된 부분이다.
Querydsl 내부에서 새로운 Expression을 사용할 수 있도록 지원해준다.
public List < CodeDto > selectCodeList(ArrayList < String > cdDtlList) throws Exception {
return jpaQueryFactory
.select(Projections.constructor(CodeDto.class,
code.id,
code.cdId,
code.cd,
code.cdNm,
code.cdNmEn,
ExpressionUtils.as(
JPAExpressions
.select(code.count())
.from(code)
.where(code.parntSeq.eq(code.id)), "cnt")
))
.from(code)
.where(code.cdId.in(cdDtlList))
.orderBy(code.id.asc())
.fetch();
}
▶ WHERE 에서의 서브 쿼리의 사용 방법
ExpressionUtils.as()을 사용하지 않고 바로 JPAExpressions를 통해 조회한다.
public List < CodeDto > selectCodeList(ArrayList < String > cdDtlList) throws Exception {
return jpaQueryFactory
.select(Projections.constructor(CodeDto.class,
code.id,
code.cdId,
code.cd,
code.cdNm,
code.cdNmEn,
ExpressionUtils.as(
JPAExpressions
.select(code.count())
.from(code)
.where(code.parntSeq.eq(code.id)), "cnt")
))
.from(code)
.where(
code.cdId.eq(
JPAExpressions
.select(code.cdId)
.from(code)
.where(code.cd.eq("DEPT10")))
)
.orderBy(code.id.asc())
.fetch();
}