Maison >Java >javaDidacticiel >Comment résoudre l'erreur « Instance transitoire non enregistrée de références d'objet » d'Hibernate ?

Comment résoudre l'erreur « Instance transitoire non enregistrée de références d'objet » d'Hibernate ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-18 01:36:13783parcourir

How to Resolve Hibernate's

Résolution de l'erreur « Instance transitoire non enregistrée de références d'objet » d'Hibernate

Lorsque vous essayez d'enregistrer un objet à l'aide d'Hibernate, vous pouvez rencontrer l'erreur suivante :

object references an unsaved transient instance - save the transient instance before flushing

Comprendre l'erreur

Cette erreur indique que vous disposez d'une collection dans votre entité qui contient un ou plusieurs éléments qui ne sont pas présents dans la base de données. Hibernate nécessite que toutes les entités référencées par d'autres entités soient soit enregistrées (persistées) dans la base de données, soit marquées comme transitoires.

Résolution

La solution à cette erreur consiste à spécifier l’option cascade pour la cartographie de votre collection. Vous pouvez le faire en utilisant XML ou des annotations :

XML :

<collection name="collectionName" cascade="all">
    ...
</collection>

Annotations :

@OneToMany(cascade = CascadeType.ALL)
private List<ChildEntity> collectionName;

Explication

En précisant le cascade="all" ou CascadeType.ALL, vous demandez à Hibernate de sauvegarder toutes les entités de la collection dans la base de données lors de la sauvegarde de l'entité parent. Cela garantit que toutes les entités référencées sont conservées dans la base de données et résout l'erreur.

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