Hibernate는 SessionFactory 생성 동안이 예외를 던진다 :
org.hibernate.loader.MultipleBagFetchException : 여러 백을 동시에 가져올 수 없음
이것은 내 테스트 사례입니다.
Parent.java
@Entity
public Parent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
// @IndexColumn(name="INDEX_COL") if I had this the problem solve but I retrieve more children than I have, one child is null.
private List<Child> children;
}
Child.java
@Entity
public Child {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private Parent parent;
}
이 문제는 어떻습니까? 어떡해?
편집하다
좋아, 내가 가진 문제는 또 다른 "부모"개체가 부모 내부에 있다는 것입니다. 실제 행동은 다음과 같습니다.
Parent.java
@Entity
public Parent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
private AnotherParent anotherParent;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
private List<Child> children;
}
AnotherParent.java
@Entity
public AnotherParent {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
private List<AnotherChild> anotherChildren;
}
최대 절전 모드는로 두 컬렉션을 좋아하지 FetchType.EAGER
않지만 이것은 버그 인 것 같습니다. 특별한 일을하지 않습니다 ...
제거 FetchType.EAGER
에서 Parent
또는 AnotherParent
문제가 해결하지만, 실제 솔루션을 사용하는 것입니다, 그래서 나는 그것을 필요로 @LazyCollection(LazyCollectionOption.FALSE)
대신 FetchType
(덕분에 Bozho 솔루션에 대한).
select * from master; select * from child1 where master_id = :master_id; select * from child2 where master_id = :master_id
List<child>
에 fetchType
대해 정의 된 하나 이상의 List<clield>