Maison >Java >javaDidacticiel >Comment corriger l'exception « Échec de l'initialisation paresseuse de la collection » d'Hibernate ?

Comment corriger l'exception « Échec de l'initialisation paresseuse de la collection » d'Hibernate ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-30 05:45:19449parcourir

How to Fix Hibernate's

Comment résoudre l'exception « Échec de l'initialisation paresseuse de la collection » d'Hibernate lors d'une itération sur les relations

Le problème survient lors de la tentative d'accès à une collection à partir de une entité qui n’a pas été entièrement initialisée dans la session en cours. Dans ce cas, la collection "comments" de l'entité "Topic" n'est pas récupérée lors de la requête initiale, conduisant à une exception Hibernate.

Pour remédier à cela, il faut comprendre que les collections sont chargées paresseusement par par défaut dans Hibernate. Cela signifie que leurs éléments ne sont pas récupérés avec impatience lorsque l'entité parent est récupérée, mais plutôt lorsqu'on y accède réellement.

Pour charger avec impatience la collection "comments", mettez à jour le mappage des champs dans le modèle "Sujet" pour :

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

En définissant la stratégie de récupération sur FetchType.EAGER, Hibernate récupérera explicitement la collection "comments" lors de la requête initiale, garantissant que tous les éléments sont disponibles lors de l'accès à l'instance "topicById".

De plus, envisagez d'augmenter le délai d'expiration de la session pour permettre des opérations plus longues ou d'utiliser l'annotation @OpenSessionInView pour garantir que la session Hibernate reste ouverte pendant le rendu de la vue JSP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn