Heim >Java >javaLernprogramm >Wie behebt man die Ausnahme von Hibernate, dass eine Sammlung von Rollen nicht träge initialisiert werden konnte?
Hibernate-Ausnahme „Fehler beim verzögerten Initialisieren einer Rollensammlung“ kann beim Zugriffsversuch auftreten eine träge geladene Sammlung außerhalb eines Sitzungskontexts. Um dieses Problem zu lösen, schauen wir uns das spezifische Szenario an:
Der bereitgestellte Code definiert eine @OneToMany-Beziehung im Topic-Modell, abgebildet durch das Comment-Modell. In Ihrem Controller rufen Sie eine Topic-Instanz und ihre Kommentare ab. Die JSP-Ansicht durchläuft dann die Kommentare, um sie anzuzeigen. Dies löst jedoch die Ausnahme aus, da die Kommentarsammlung standardmäßig verzögert geladen wird.
Um dies zu beheben, haben Sie zwei Möglichkeiten:
1. Eager Loading:
Aktualisieren Sie die Kommentarfeldzuordnung im Thema, um Eager Loading zu verwenden:
@OneToMany(fetch = FetchType.EAGER, mappedBy = "topic", cascade = CascadeType.ALL) private Collection<Comment> comments = new LinkedHashSet<>();
Eager Loading stellt sicher, dass die Kommentarsammlung initialisiert wird, wenn das Thema geladen wird, und verhindert so das Ausnahme.
2. Lazy Loading mit offener Sitzung:
Alternativ können Sie die Kommentarsammlung als verzögertes Laden belassen, aber sicherstellen, dass die Ruhezustandssitzung geöffnet ist, wenn Sie auf die Kommentare zugreifen:
In Ihrem Controller:
Topic topicById = service.findTopicByID(id); // Start a new Hibernate session Session session = sessionFactory.getCurrentSession(); Collection<Comment> commentList = topicById.getComments(); // Close the session once done session.close(); // Pass the commentList to the view //...
Durch das Öffnen einer neuen Sitzung innerhalb des Controllers verfügt Hibernate über den erforderlichen Kontext Initialisiert die Kommentarsammlung. Denken Sie daran, die Sitzung nach Abschluss explizit zu schließen.
Bedenken Sie, dass Eager Loading Auswirkungen auf die Leistung größerer Sammlungen haben kann. Wählen Sie daher den Ansatz, der den Anforderungen Ihrer Anwendung am besten entspricht.
Das obige ist der detaillierte Inhalt vonWie behebt man die Ausnahme von Hibernate, dass eine Sammlung von Rollen nicht träge initialisiert werden konnte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!