Comprendre l'exception « Échec de l'initialisation paresseuse d'une collection » dans Hibernate
Dans le contexte d'Hibernate, l'exception « Échec de l'initialisation paresseuse d'une collection » " Une exception se produit lorsqu'une tentative est effectuée pour accéder à une propriété de collection d'une entité détachée qui n'a pas été correctement récupérée lors de la requête d'origine. Cette erreur se produit généralement lors de l'accès à des collections en dehors de la portée de la session Hibernate, souvent lors du traitement de l'affichage.
Pour résoudre ce problème, la relation de modèle entre le sujet et le commentaire doit être examinée. La collection de commentaires dans le modèle Topic est marquée comme initialisée par défaut par défaut. Cela signifie que la collection n'est pas chargée en mémoire lorsque l'entité Topic est récupérée de la base de données. Au lieu de cela, il n'est chargé que lorsque l'on accède réellement à la collection.
Étant donné que la collection est initialisée paresseusement, elle n'est plus accessible une fois que l'entité Topic est détachée de la session Hibernate. Dans ce scénario spécifique, l'entité Topic est détachée lorsque le flux de contrôle passe du contrôleur (TopicController) à la vue JSP (/topic/details), conduisant à l'exception.
Pour corriger l'erreur, les commentaires la collection peut être récupérée avec impatience pendant la requête. Ceci peut être réalisé en changeant le type de récupération de LAZY à EAGER dans l'annotation @OneToMany :
@OneToMany(fetch = FetchType.EAGER, mappedBy = "topic", cascade = CascadeType.ALL) private Collection<Comment> comments = new LinkedHashSet<Comment>();
En définissant le type de récupération sur EAGER, la collection sera immédiatement chargée en mémoire lorsque l'entité Topic est récupérée. à partir de la base de données, en garantissant qu'elle est accessible à tout moment, même en dehors de la session Hibernate.
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!