Join할 때 테이블에 OneToMany가 2개 이상일 경우
MultipleBagFetchException 가 발생한다.


데이터의 중복 문제 때문에 MultipleBagFetchException 발생하는 것으로 보인다.

OneToMany 양방향 매핑을 걸어준 필드의 타입은 List 인데
List → Set 으로 변경하니 위처럼 에러없이 잘 나온다.
하지만 List를 Set으로 변경해서 사용하는 것 보다 좋은 해결책이 있을 것이라는 생각이 들었다.
Set으로 가져오면 일단 정렬이 안된다는 단점도 있다.
위 블로그의 내용을 보면
2개 이상의 OneToMany 자식 테이블에 Fetch Join을 선언했을 때 발생하는 MultipleBagFetchException을 해결하기 위해서
- Fetch Join을 1번만 하고 나머지는 다 Lazy Loading으로 !
- 모든 자식 테이블을 다 Lazy Loading으로 !
가져오는 이 2가지 방법을 많이 쓴다고 한다.
결론 : OneToMany 가 2개 이상 걸려있으면 여러번 Join 해서 가져오지 X
레이지 로딩으로 가져와야 하는데
- Join + 레이지로딩
- join + inQuery 로 조회(select)
하는 방법 2개를 사용해 보았다
(To be continued…)
Share article