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;
}
Hibernate не любит две коллекции с 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>