@Getter
@AllArgsConstructor
public class UserDto {
private String name; // 필드명 'name'
private Integer age; // 필드명 'age'
}
public List<UserDto> findUsers() {
QUser user = QUser.user;
return queryFactory
.select(Projections.constructor(UserDto.class,
user.username, // DTO의 필드명과 다름 (name 대신 username)
user.age
))
.from(user)
.fetch();
}
해결 방법은 .as("별칭")을 사용하여 DTO의 필드명과 Repository의 필드명을 맞추는 것이다.
public List<UserDto> findUsers() {
QUser user = QUser.user;
return queryFactory
.select(Projections.constructor(UserDto.class,
user.username.as("name"), // 필드명을 DTO에 맞게 별칭 설정
user.age
))
.from(user)
.fetch();
}