백엔드/Spring
[Querydsl] Resolved [com.querydsl.core.types.ExpressionException ~ ]
작은소행성
2024. 3. 22. 16:54
selet 문에 내가 원하는 값으로 리턴하기 위해
Querydsl 에서 Projections.fileds를 사용하는데 다음과 같은 에러가 발생했었다.
@Override
public List<AnswerDTO> getMasterIdList(Long memberId) {
return jpaQueryFactory.select(
Projections.fields(AnswerDTO.class,
answer.answerId.as("answerId"),
answer.answerId.count().coalesce(0L).as("answerCount"))
)
.from(answer)
.where(answer.mberId.eq(memberId))
.fetch();
}
Projections의 경우 생성자 기반이 아닌 필드 기반으로 가져올 때 DTO의 기본 생성자가 필요하기 때문에
DTO에 @NoArgsConstructor 어노테이션을 사용해서 해결했다.
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class AnswerDTO {
private Long answerId;
private Long answerCount;
}
반응형