MultipleBagFetchException während der SessionFactory-Erstellung im Ruhezustand
Wenn während der SessionFactory-Erstellung die Ausnahme „MultipleBagFetchException: Es können nicht mehrere Taschen gleichzeitig abgerufen werden“ auftritt, ist eine Überprüfung von entscheidender Bedeutung die beteiligten Entitäten.
Im bereitgestellten Beispiel enthält Parent eine OneToMany-Beziehung zu Kinderkindern. Darüber hinaus wird die Kinderliste der Eltern eifrig abgerufen. Wenn jedoch eine andere „übergeordnete“ Entität „AnotherParent“ in „Parent“ eingefügt wird, tritt ein Fehler auf, da zwei eifrig abgerufene Sammlungen vorhanden sind.
Um dieses Problem zu beheben, sollten Sie anstelle der Verwendung von FetchType.EAGER in Betracht ziehen, die Sammlungsfelder mit zu kommentieren @LazyCollection(LazyCollectionOption.FALSE). Dieser Ansatz vermeidet das eifrige Abrufen der Sammlungen und eliminiert die Ausnahme.
Es ist erwähnenswert, dass in den meisten Fällen ein Set
Obwohl diese Lösung die Ausnahme behebt, ist es wichtig, mit Vorsicht vorzugehen. Die alleinige Verwendung eines Sets eliminiert nicht vollständig das Potenzial für ein kartesisches Produkt, wie es Vlad Mihalcea in seiner Antwort mit der Bezeichnung „Die schlechteste Lösung“ beschrieben hat.
Das obige ist der detaillierte Inhalt vonWie kann die MultipleBagFetchException von Hibernate während der SessionFactory-Erstellung behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!