[Error]QueryDsl Projection.constructor 에러

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

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

  • 원인
    • JPA에서 Projection.constructor를 사용할 때, DTO 클래스에 정의된 필드와 Repository에서 select로 선택한 필드가 완전히 일치하지 않으면 오류가 발생합니다.
  • 해결방법
      1. DTO 클래스의 필드 타입과 Repository에서 select로 지정한 필드의 타입이 일치해야 합니다.
      1. DTO 생성자에서 사용하는 필드의 순서와 select에서 지정한 필드의 순서가 동일해야 합니다.
      1. 생성자 프로젝션에서는 필드명이 일치하지 않아도 되지만, 만약 필드명으로 매핑하는 다른 방식(예: @Query에서 DTO로 변환하거나 Tuple 사용)을 사용한다면 as("별칭")을 사용해 필드명을 맞춰줄 수 있습니다.
profile
꾸준한 발전을 지향하는 개발자
post-custom-banner

0개의 댓글