Maison > Java > javaDidacticiel > Pourquoi est-ce que j'obtiens l'erreur « un objet différent avec la même valeur d'identifiant était déjà associé à la session » dans le mappage plusieurs-à-plusieurs de myHibernate ?

Pourquoi est-ce que j'obtiens l'erreur « un objet différent avec la même valeur d'identifiant était déjà associé à la session » dans le mappage plusieurs-à-plusieurs de myHibernate ?

DDD
Libérer: 2024-10-28 16:18:14
original
434 Les gens l'ont consulté

 Why am I getting

Erreur d'identifiant différent d'Hibernate dans le mappage plusieurs-à-plusieurs

L'erreur "un objet différent avec la même valeur d'identifiant était déjà associé au session" se produit lorsqu'Hibernate tente de sauvegarder un objet qui existe déjà dans la session. Dans ce cas, cela semble être lié à un mappage plusieurs-à-plusieurs impliquant les classes UserBean, GroupBean et RoleBean.

Dans le code fourni, le problème semble survenir lorsque la méthode saveOrUpdate est utilisée dans le fonction de sauvegarde. saveOrUpdate tente à la fois d'enregistrer et de mettre à jour les objets, et dans ce cas, il rencontre un objet rolebean#1 en double.

L'erreur suggère deux solutions possibles :

  • Utilisez session.merge( e) au lieu de session.saveOrUpdate(e) : cette méthode fusionne l'objet détaché avec l'objet persistant, évitant ainsi le conflit d'identifiant. Cependant, il peut également écraser les données existantes.
  • Identifiez la cause de l'objet rolebean#1 en double : inspectez le code dans lequel le bean rôle est attribué à la fois à l'utilisateur et au groupe et déterminez s'il existe un problème avec la façon dont les instances sont créées ou attribuées.

Le message d'exception indique que l'objet rolebean#1 a été enregistré deux fois dans la session, ce qui peut se produire si le même objet est affecté à plusieurs collections (userbean.groups et userbean.roles) sans être marqué comme une nouvelle instance dans chaque cas.

En comprenant le comportement d'Hibernate et en examinant le code où les objets sont attribués, il est possible de résoudre le problème et de garantir que les objets sont enregistrés et associés correctement au sein de la session.

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 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