Hibernate सत्र अपवाद निर्माण के दौरान इस अपवाद को फेंकता है:
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
( समाधान के लिए बोझो के लिए धन्यवाद )।
select * from master; select * from child1 where master_id = :master_id; select * from child2 where master_id = :master_id
List<child>
साथ एक simillar त्रुटि प्राप्त कर सकते हैंfetchType
List<clield>