본문 바로가기

Server/Spring

[우당탕탕 개발 일지] com.querydsl.core.types.ExpressionException 에러: 기본 생성자 필요

반응형
SMALL
@Data
@AllArgsConstructor
public class MemberDto {

	private String username;
	private int age;
}

MemberDto를 만들어주고,

 

	@Test
	public void findDtoBySetter() {
		List<MemberDto> result = queryFactory
			.select(Projections.bean(MemberDto.class,
				member.username,
				member.age))
			.from(member)
			.fetch();

		for (MemberDto memberDto : result) {
			System.out.println("DTO: " + memberDto);
		}
	}

다음과 같이 Projections.bean을 이용하여 DTO 조회를 했는데,

 

에러 발생 🥺

 

 

무엇이 문제인가,, 찾아보니 Projections.bean은 기본 생성자를 기반으로 동작한다더랬다.

기본 생성자가 없어서 위의 예외가 발생한 것이다.

 

@Data
@NoArgsConstructor
@AllArgsConstructor
public class MemberDto {

	private String username;
	private int age;
}

그럼 DTO에 기본생성자를 의미하는 @NoArgsConstructor 어노테이션을 달아준다면?

 

테스트가 성공했다. 희희

 

 

Projections.bean을 쓰려면 해당 DTO에 기본생성자를 꼭 달아주자!!

 

 

References

https://jhkimmm.tistory.com/30

반응형
LIST