728x90
1. 이슈
- QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list 오류
return queryFactory.select(new QMemberTeamDto(
member.id.as("memberId"),
member.username,
member.age,
team.id.as("teamId"),
team.name.as("teamName")
))
.from(member)
.leftJoin(member.team,team).fetchJoin()
.where(builder)
.fetch();
2. 원인
- DTO 반환 형식에 fetchJoin을 사용하여 발생하였습니다.
2-1. fetch join을 사용하는 이유
- 엔티티 상태에서 엔티티 그래프를 참조하기 위해 사용합니다. (N+1) 해결
- 엔티티가 아닌 DTO 상태로 조회하는 것은 불가능
- 해결
- 반환형식이 DTO 일 때는 fetchJoin() 빼면 됩니다.
728x90