Hazırda Beklet, SessionFactory oluşturma sırasında bu özel durumu atar:
org.hibernate.loader.MultipleBagFetchException: aynı anda birden çok torba getirilemiyor
Bu benim test durumum:
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;
}
Bu soruna ne dersin? Ne yapabilirim?
DÜZENLE
Tamam, benim sorun başka bir "üst" varlık ebeveyn içinde olmasıdır, benim gerçek davranış şudur:
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, iki koleksiyondan hoşlanmıyor FetchType.EAGER
, ancak bu bir hata gibi görünüyor, olağandışı şeyler yapmıyorum ...
Çıkarma FetchType.EAGER
gelen Parent
veya AnotherParent
problem çözer, ama gerçek bir çözüm kullanmaktır yüzden, ihtiyaç @LazyCollection(LazyCollectionOption.FALSE)
yerine FetchType
(sayesinde Bozho çözümü için).
select * from master; select * from child1 where master_id = :master_id; select * from child2 where master_id = :master_id
List<child>
ile fetchType
tanımlanmış birden fazla List<clield>