작성
·
477
·
수정됨
1
안녕하세요 궁금한 부분이 있어 질문 남깁니다
7:58~ 에서
프로퍼티 접근은 setter 를 통해 값이 들어가므로
@Data 애노테이션을 지우고 직접 getter, setter를 만들어주셨습니다.
저는 setter가 없으면 오류가 날 것이라 생각하여
getter, setter를 생성하지 않고 테스트를 해보았는데 정상적으로 실행되더라고요.
오류가 나지 않는 게 맞는지, 그렇다면 이유가 무엇인지 궁금합니다 ㅠㅠ
아래는 실행한 코드입니다
public class MemberDto {
private String username;
private int age;
public 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("memberDto = " + memberDto);
}
}
+추가..
.....뒤늦게 MemberDto에 @ToString 을 달아 확인해보았습니다.
오류는 나지 않았지만 안에 값은 없었네요 ㅎㅎㅎ.......
답변 1
2
안녕하세요. high님, 공식 서포터즈 OMG입니다.
.
동일한 궁금증을 가진 수강생분이 테스트하여 질문을 남기셨고 관련하여 영한님께서 아래와 같은 답변을 남겨주셨는데요,
도움을 드리고 싶어 찾아보니 아래 링크에서
직접 setter를 만들고, setter에서 호출이 되는지 로그를 찍었을 때는 setter를 호출하더라구요.
위 링크에서 확인한 것처럼 setter에 확인용 로그를 찍어서 setter가 호출되는지 확인해보시면 좋을 것 같고,
정상동작한 것은 getter/setter가 없는 경우 Projection.field처럼 리플렉션으로 필드에 직접 접근해서 가능하지 않을까 라고 "추측" 되네요.
이유를 아시는 분 계시다면 댓글 부탁드립니다 ^^!
.
감사합니다.
감사합니다!!