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 ?
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 :
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!