[Error] 하이버네이트 @OneToMany 에러 - 1

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

keepgoing