Maison > Java > javaDidacticiel > Comment corriger l'erreur « L'objet fait référence à une instance transitoire non enregistrée » d'Hibernate ?

Comment corriger l'erreur « L'objet fait référence à une instance transitoire non enregistrée » d'Hibernate ?

DDD
Libérer: 2024-12-13 07:20:14
original
198 Les gens l'ont consulté

How to Fix Hibernate's

Correction de l'erreur « L'objet fait référence à une instance transitoire non enregistrée » d'Hibernate

L'erreur « L'objet fait référence à une instance transitoire non enregistrée » dans Hibernate se produit lors de la tentative pour enregistrer un objet avec des objets associés non enregistrés sans spécifier correctement la cascade opérations.

Cause :

Cette erreur se produit lorsqu'une entité possède une propriété de collection qui contient de nouvelles instances qui n'ont pas encore été enregistrées dans la base de données. Hibernate tente d'enregistrer automatiquement ces nouvelles instances lorsque l'objet parent est persistant, mais échoue si l'attribut cascade n'est pas défini correctement.

Solution :

Pour résoudre ce problème , vous devez spécifier l'attribut cascade sur votre mappage de collection. Cela indique à Hibernate d'enregistrer automatiquement les objets associés lorsque l'objet parent est enregistré.

Si vous utilisez le mappage XML, ajoutez ce qui suit à votre mappage de collection :

<set name="relatedObjects" inverse="true" cascade="all">
    <key column="parent_id"/>
    <one-to-many class="RelatedObject" column="related_id"/>
</set>
Copier après la connexion

Si vous utilisez des annotations, ajoutez le suivant votre propriété de collection :

@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private Set<RelatedObject> relatedObjects;
Copier après la connexion

En spécifiant cascade=all, vous demandez à Hibernate de conserver les objets associés avec l'objet parent dans une seule transaction. Cela garantit que tous les objets nécessaires sont enregistrés dans la base de données et que l'erreur « instance transitoire non enregistrée » est évitée.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal