인프런 커뮤니티 질문&답변

DoubleCat님의 프로필 이미지
DoubleCat

작성한 질문수

실전! Querydsl

1:N 관계가 여러 개인 Entity를 Fetch join 하는법.

작성

·

1.1K

1

@Entity

class A {

@Id

private Long id

 

@ManyToOne

@JoinColumn(name = "b_id")

private B b

}


@Entity

class B{

@Id

private Long id

@OneToMany(mappedBy = "b")

private List<A> aList

 

@ManyToOne

@JoinColumn(name = "c_id")

private C c

}

 

Entiy

class C{

@Id

private Long id

 

@OneToMany(mappedBy = "c")

private List<B> bList

}

 

이런식으로 A -> B -> C 가 종속적으로 1:N 관계가 있을 때

하나의 querydsl 문으로 하나의 쿼리로 Table C에 있는 값을 가져오고 싶습니다.

즉 c.bList[0].aList[0].id <- a.id 나올수 있도록 만들고 싶은데

 

.selectFrom(c)

.join(c.bList, b).fetchJoin()

.join(b.aList, a).fetchJoin()

.fetch()

를 하면 query 생성시 에러가 나옵니다. 

혹시 다른 방법이 있나요?

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. DoubleCat님

1:N 관계는 1개만 fetch join이 가능합니다.

이런 경우 어떻게 문제를 해결하는지 다음 강의에서 자세히 설명드립니다.

실전! 스프링 부트와 JPA 활용2

감사합니다.

 

DoubleCat님의 프로필 이미지
DoubleCat

작성한 질문수

질문하기