MultipleBagFetchException
한 JPQL 쿼리 안에서 List 타입인 자식 컬렉션 두 개 이상을 동시에 join fetch하려 할 때 Hibernate가 실행 자체를 거부하며 던지는 예외다. 컬렉션 두 개를 한 번에 조인하면 두 컬렉션의 조합만큼 행이 곱해져 늘어나는데(카티션 곱), Hibernate는 List에서는 이 상태를 정리할 방법이 없어 아예 막는다. 컬렉션 타입을 Set으로 바꾸면 예외는 사라지지만 곱해진 행을 DB가 그대로 보낸 뒤 애플리케이션이 조용히 중복을 제거하므로, 근본적인 해법은 하나만 join fetch하고 나머지는 따로 조회하는 것이다.
자신만의 철학을 만들어가는 중입니다.
최상단으로 이동했습니다!