• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

22.04.27 13:48 작성 조회수 815

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

감사합니다.