Spring
Spring - JPA cannot simultaneously fetch multiple bags
codeManager
2022. 11. 4. 19:16
반응형
Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
하나의 entity에 한개 이상의 FetchType.EAGER 를 사용할 때 발생합니다.
@Entity
public class Person {
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE)
private List<Phone> phoneList;
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE)
private List<Car> carList;
}
@OneToMany 속성을 EAGER로 여러개를 할 경우 MultipleBagFetchException이 발생합니다.
해결방법은
1.
FetchType.LAZY로 바꾼다.
@OneToMany(fetch = FetchType.LAZY, mappedBy = "person", cascade = CascadeType.REMOVE)
private List<Car> carList;
2.
List를 Set으로 바꾼다.
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE)
private Set<Car> carList;
3.
@Fetch(value = FetchMode.SUBSELECT)
@OneToMany(fetch = FetchType.EAGER, mappedBy = "person", cascade = CascadeType.REMOVE)
@Fetch(value = FetchMode.SUBSELECT)
private List<Car> carList;
반응형