계층구조로 join이 일어나는 경우에 대한 질문입니다..
@Table(name = "a")
@Entity
@Getter
public class AEntity {
@Id
@Column(name = "a_id")
private Long aId;
@OneToMany(mappedBy = "aEntity")
List<BEntity> bList;
public void initializeClist() {
bList.stream().map(BEntity::getCList).forEach(Hibernate::initialize);
}
}@Table(name = "b")
@Entity
@Getter
public class BEntity {
@Id
@Column(name = "b_id")
private Long bId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "a_id")
private AEntity aEntity;
@OneToMany(mappedBy = "bEntity")
List<CEntity> cList;
}@Table(name = "c")
@Entity
@Getter
public class CEntity {
@Id
@Column(name = "c_id")
private Long cId;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id")
private BEntity bEntity;
}안녕하세요. 수업을 아직 수강중인 학생입니다.
위와같이 A -> B -> C 아래로 OneToMany 관계로 LeftJoin을 해야한다고 하면
어떤식으로 코드를 짜야하는 걸까요?
displayRwdbJpaQueryFactory
.selectFrom(QAEntity.aEntity)
.leftJoin(QAEntity.aEntity.bList, QBEntity.bEntity)
.fetchJoin().fetch();.fetchJoin을 써봤는데.. 한번은 되는데 두번은 안되더라구요..
bList.stream().map(BEntity::getCList).forEach(Hibernate::initialize);@BatchSize 주고 위처럼 initialize 해봤는데..
테이블 계층구조가 여기서 끝나는게 아니라서.. 이런식으로 처리 되기에는 조금 무리가 있을것 같습니다.
장고끝에 조언을 구합니다.. 도와주세요.. ㅠㅠ
답변 1
1
안녕하세요. 디카페인빌런님
이 문제를 해결하는 다양한 방법들이 있는데요.
결론부터 말씀드리면 fetch join은 하나만 적용할 수 있습니다.
그리고 나머지는 batch size, 또는 dto로 조회후 조립하는 방법등을 사용해야 합니다.
관련해서 다음 강의에서 해당 내용을 자세히 다루니 강의 내용을 참고해주세요.
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
감사합니다.
SpringBoot 4.X에서의 Querydsl 설정
0
96
2
querydsl 오픈소스에 대한 질문
1
76
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
111
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
323
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
71
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
162
1
querydsl sum() 메서드 없어요.
0
161
2
build 디렉터리 생성
0
140
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
114
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
93
1
오타 제보 드립니다.
0
73
2
벌크 연산과 flush, clear
0
76
1
Run As Intellij 로 변경시 Q타입 import 불가
0
89
1
QHello import하기 문제 발생
0
148
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





