[Error]QueryDsl Projection.constructor 에러

개발자 P군·2024년 10월 15일
0
post-thumbnail

프로젝트에서 Querydsl을 사용하여 조회할 때 com.querydsl.core.types.ExpressionException: No constructor found for class 에러가 발생했습니다.
이와 같은 에러를 해결하기위해 원인과 해결방법을 찾아봤습니다.


  • 원인

    • JPA에서 Projection.constructor를 사용할 때, DTO 클래스에 정의된 필드와 Repository에서 select로 선택한 필드가 완전히 일치하지 않으면 오류가 발생합니다.
  • 해결방법

    • DTO 클래스의 필드 타입과 Repository에서 select로 지정한 필드의 타입이 일치해야 합니다.
    • DTO 생성자에서 사용하는 필드의 순서와 select에서 지정한 필드의 순서가 동일해야 합니다.
    • 생성자 프로젝션에서는 필드명이 일치하지 않아도 되지만, 만약 필드명으로 매핑하는 다른 방식(예: @Query에서 DTO로 변환하거나 Tuple 사용)을 사용한다면 as("별칭")을 사용해 필드명을 맞춰줄 수 있습니다.

저의 경우에는 필드명이 정확히 일치하지 않아서 해당 에러가 발생했습니다.

profile
꾸준한 발전을 지향하는 개발자입니다. 문제를 발견하고 해결하는 과정을 통해 얻은 새로운 지식을 공유하고자 합니다.

0개의 댓글

관련 채용 정보