Heim >Java >javaLernprogramm >Wie kann die Ausnahme „Failed to Lazily Initialize Collection' im Ruhezustand behoben werden?

Wie kann die Ausnahme „Failed to Lazily Initialize Collection' im Ruhezustand behoben werden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 05:45:19446Durchsuche

How to Fix Hibernate's

So beheben Sie die Hibernate-Ausnahme „Sammlung konnte nicht verzögert initialisiert werden“ beim Durchlaufen von Beziehungen

Das Problem tritt auf, wenn versucht wird, auf eine Sammlung zuzugreifen eine Entität, die in der aktuellen Sitzung nicht vollständig initialisiert wurde. In diesem Fall wird die Sammlung „Kommentare“ der Entität „Thema“ bei der ersten Abfrage nicht abgerufen, was zu einer Ausnahme im Ruhezustand führt.

Um dies zu beheben, muss man verstehen, dass Sammlungen verzögert geladen werden Standardmäßig im Ruhezustand. Dies bedeutet, dass ihre Elemente nicht eifrig abgerufen werden, wenn die übergeordnete Entität abgerufen wird, sondern erst dann, wenn tatsächlich auf sie zugegriffen wird.

Um die „Kommentar“-Sammlung eifrig zu laden, aktualisieren Sie die Feldzuordnung im „Topic“-Modell auf :

@OneToMany(fetch = FetchType.EAGER, mappedBy = "topic", cascade = CascadeType.ALL)
private Collection<Comment> comments = new LinkedHashSet<>();

Durch Festlegen der Abrufstrategie auf FetchType.EAGER ruft Hibernate die Sammlung „Kommentare“ während der ersten Abfrage explizit ab und stellt so sicher, dass alle Elemente verfügbar sind beim Zugriff auf die „topicById“-Instanz.

Erwägen Sie außerdem, das Sitzungszeitlimit zu erhöhen, um länger laufende Vorgänge zu berücksichtigen, oder verwenden Sie die Annotation @OpenSessionInView, um sicherzustellen, dass die Ruhezustandssitzung während der JSP-Ansichtswiedergabe geöffnet bleibt.

Das obige ist der detaillierte Inhalt vonWie kann die Ausnahme „Failed to Lazily Initialize Collection' im Ruhezustand behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn