constructor 방식 Enum List argument type mismatch 질문
950
작성한 질문수 1
안녕하세요 영한님! 저는 강의 후에 개인 프로젝트를 진행중인데요
@Column(nullable = false)
@ElementCollection
private List<Tech> techs;Post class에 해당 Enum type List가 있습니다.
package project.como.domain.post.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum Tech {
Java("Java"),
Spring("Spring");
private String stack;
}
그런데 Projections.constructor 방식으로 Dto를 만들때 에러가 발생합니다.
List<PostAbstractResponseDto> content = queryFactory
.select(Projections.constructor(PostAbstractResponseDto.class,
post.title,
post.category,
post.state,
post.techs
))
.from(post)
.where(stateEq(condition.getState()),
categoryEq(condition.getCategory()),
techsContains(condition.getTechs()))
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();post.techs와 조건식을 제외하고 조회할 때는 정상적으로 잘 동작하지만, post.techs를 넣는 경우에 argument type mismatch 에러가 발생하네요.
무슨 문제인지 궁금합니다. 감사합니다 :)
답변 2
0
안녕하세요. gksrhs97님
도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.
실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요
추가로 다음 내용도 코멘트 부탁드립니다.
1. 문제 영역을 실행할 수 있는 방법
2. 문제가 어떻게 나타나는지에 대한 상세한 설명
감사합니다.
0
안녕하세요, 인프런 AI 인턴이에요.
에러 메시지를 보면 “argument type mismatch” 오류가 발생한 것 같아요. 이는 프로젝션 생성자 방식으로 Dto를 만들 때 techs 필드에 대한 타입이 일치하지 않는다는 의미에요.
문제를 해결하기 위해서는 프로젝션 생성자의 PostAbstractResponseDto 클래스에 대한 생성자를 수정해야 해요. 타입이 일치하도록 List
예를 들어, PostAbstractResponseDto 클래스에 다음과 같은 생성자를 추가해보세요.
@AllArgsConstructor
public class PostAbstractResponseDto {
private String title;
private String category;
private String state;
private List
// 기본 생성자
public PostAbstractResponseDto() {
}
// 모든 필드를 초기화하는 생성자
public PostAbstractResponseDto(String title, String category, String state, List<Tech> techs) {
this.title = title;
this.category = category;
this.state = state;
this.techs = techs;
}
}
이렇게 생성자를 추가하고 나면 프로젝션 생성자에서 해당 생성자를 사용할 수 있게 될 것입니다.
해당 수정을 통해 오류가 해결되길 바랍니다. 추가 질문이 있으시면 언제든지 물어보세요. 좋은 하루 보내세요!
1
이미
@NoArgsConstructor, @AllArgsConstructor 롬복을 사용중이었고 혹시 몰라 어노테이션 빼고 기본 생성자, 모든 필드 생성자 달아줘도 똑같은 에러가 납니다.
SpringBoot 4.X에서의 Querydsl 설정
0
92
2
querydsl 오픈소스에 대한 질문
0
74
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
109
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
319
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
71
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
160
1
querydsl sum() 메서드 없어요.
0
160
2
build 디렉터리 생성
0
140
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
114
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
92
1
오타 제보 드립니다.
0
73
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
89
1
QHello import하기 문제 발생
0
147
2
등록된 함수 보는법(H2Dialect) 질문
0
69
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
199
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
202
1
querydsl 설정 문제
0
222
2
quey dsl 설정부분
0
158
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
89
1
답변부탁드리겠습니다.
0
90
2
(OrderSpecifier)관련 내용 어디있을가요
0
66
1
중급문법 벌크연산에서
0
83
2





