fetch join시 에러 문제 문의입니다!
826
3 asked
안녕하세요 선생님!
문의사항이 있어 글 남깁니다.
우선 코드먼저 송부드립니다!!
[현재 상황]
현재 account, product, orderInfo 테이블에 더미데이터 모두 넣어놓은 상태 (mysql사용)
orderInfo에는 현재 2번째 이미지 SearchRequestDto 생성자 내용들이 DB에 있는 상태
[querydsl 코드]

[test 코드]

[orderInfo 코드]

join만 사용하게 되었을 때는 테스트 코드에서 아래와 같이 오류가 발생하지 않습니다.

fetchjoin을 활용하였을 시에는 아래와 같은 오류가 계속 발생합니다.
오류는 아래와 같습니다.

select에 각 엔티티별 원하는 데이터를 기입하였으니, fetchjoin을 활용하면 쿼리 성능이 최적화되겠다! 라고 생각하여 fetchjoin을 활용하였는데 계속 오류가 뜹니다.
이런 경우에는 join절만 활용가능한 것인지 궁금합니다..!
추가로 제가 작성한 코드에서 문제점이 있다면 어느 곳인지 알려주실 수 있으신지 문의드립니다!!!
Answer 2
1
답변내용 아래와 같이 확인하였습니다!
fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프를 참조하기 위해서 사용하는 것입니다. 따라서 당연히 엔티티가 아닌 DTO 상태로 조회하는 것은 불가능합니다.
이 경우 fetch join을 사용하지 마시고, 그냥 순수한 join을 사용하시면 원하는 결과를 얻을 수 있습니다^^
참고로 관련된 부분을 활용2편에서 DTO를 조회할 때 자세히 설명해드리니 참고해주세요 :)
위 부분의 내용대로라면,
select > Q클래스 활용를 활용하나, DTO형식으로 반환
join > Q클래스만을 활용함.
두 형태의 기준 자체가 다르기 때문에 fetchjoin이 안된다는 의미인지 문의드립니다!
public List<SearchResponseDto> searchAllOrders(SearchRequestDto searchRequestDto) {
return queryFactory
.select(new QSearchResponseDto(
account.name,
product.seller,
orderInfo.orderPrice,
product.category
)
)
.from(orderInfo)
.join(orderInfo.product, product)
.join(orderInfo.account, account)
.where(
nameEq(searchRequestDto.getAccountName()),
sellerEq(searchRequestDto.getSeller()),
orderPriceEq(searchRequestDto.getOrderPrice()),
categoryEq(searchRequestDto.getCategory())
)
.fetch();
}
0
fetch join을 사용하는 이유는 DTO 때문이 아닙니다.
아래 문장을 다시 참고해주세요.
fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프를 참조하기 위해서 사용하는 것입니다. 따라서 당연히 엔티티가 아닌 DTO 상태로 조회하는 것은 불가능합니다.
fetch join은 조회 대상이 엔티티여야 합니다.
1
안녕하세요. leekhy02님, 공식 서포터즈 David입니다.
아래 글 답변을 참고해주세요:)
https://www.inflearn.com/questions/23847
감사합니다.
SpringBoot 4.X에서의 Querydsl 설정
0
85
2
querydsl 오픈소스에 대한 질문
0
71
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
108
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
316
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
68
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
160
1
querydsl sum() 메서드 없어요.
0
158
2
build 디렉터리 생성
0
135
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
113
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
90
1
오타 제보 드립니다.
0
71
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
87
1
QHello import하기 문제 발생
0
147
2
등록된 함수 보는법(H2Dialect) 질문
0
68
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
195
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
200
1
querydsl 설정 문제
0
222
2
quey dsl 설정부분
0
158
2
count 쿼리 관련 질문입니다!
0
75
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
89
1
답변부탁드리겠습니다.
0
89
2
(OrderSpecifier)관련 내용 어디있을가요
0
65
1
중급문법 벌크연산에서
0
81
2

