Database ( DB )/JPA, Querydsl

QueryDSL - order by count as alias

노루아부지 2022. 3. 1. 23:06

QueryDSL 사용 중, 다음과 같은 query가 있습니다.

factory
  .select(Projections.bean(ComboVO.class
    , pcTbPositionCode.userPositionCode.as("comboCode")
    , pcTbPositionCode.userPositionNameKr.as("comboLabel")
    , pcTbPositionCode.userPositionCode.as("comboVal")))
  .from(pcTbPositionCode)
  .where(pcTbPositionCode.chkused.eq("1"))
  .fetch();

 

이때, userPositionCode가 아닌 comboCode로 order by를 하려면 어떻게 해야 할까요?

방법은 다음과 같습니다.

 

StringPath aliasQuantity = Expressions.stringPath("comboCode");

factory
  .select(Projections.bean(ComboVO.class
    , pcTbPositionCode.userPositionCode.as("comboCode")
    , pcTbPositionCode.userPositionNameKr.as("comboLabel")
    , pcTbPositionCode.userPositionCode.as("comboVal")))
  .from(pcTbPositionCode)
  .where(pcTbPositionCode.chkused.eq("1"))
  .orderBy(aliasQuantity.asc())
  .fetch();

 

728x90
loading