해결된 질문
작성
·
322
0
영한님 안녕하세요.
문의 하나 드립니다.
WorkStatus 라는 enum 이 있고, enum 내부 값은 A, B, C 3개로 구성되어 있다고 가정할 경우
SQL 에서 아래와 같이 상수가 포함된 Select 절을 QueryDsl 에서 작성해주고 싶습니다.
SELECT 'A' as workStatus, ......
From Table ...
QueryDSL 에서 WorkStatus.A 를 사용해서 작성을 해줄 수가 있을까요?
(참고로 프로젝션으로 결과 반환하고자 혀며, 위 Enum 은 DTO 에서 String 형태로 반환받고자 합니다.)
이것저것 시도해 봐도 생각처럼 잘 되지가 않네요..
답변 3
1
1
안녕하세요. 아리마님
아마 다음과 같이 코드를 작성해보시면 될꺼에요^^
enum 처리는 자바에서 enum.name() 을 사용하면 문자를 얻을 수 있습니다.
@Test
public void constantAlias() {
String statusString = WorkStatus.A.name();
List<HelloAlias> result = queryFactory
.select(Projections.fields(HelloAlias.class,
member.id,
Expressions.as(Expressions.constant(statusString), "type")
))
.from(member)
.fetch();
for (HelloAlias helloAlias : result) {
System.out.println("helloAlias = " + helloAlias);
}
}
@Data
public static class HelloAlias {
private Long id;
private String type;
}
public enum WorkStatus {
A, B, C
}
0