본문 바로가기
백엔드/Spring

[Querydsl] Resolved [com.querydsl.core.types.ExpressionException ~ ]

by 작은소행성 2024. 3. 22.

 

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;

}
반응형