Maison >Java >javaDidacticiel >Comment résoudre 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!