possible en double:
Spring + Hibernate : a different object with the same identifier value was already associated with the sessionSupprimer un objet de la session dans Hibernate?
J'ai chargé un objet X de DB en utilisant HibernateTemplate trouver par id, je reçois des attributs de cet objet et ajouté à un autre objet Y du même type qui a également été chargé par le même ID X. Puis quand j'ai essayé de saveOrUpdate
objet Y, hibernate jette l'exception un objet différent avec la même valeur d'identifiant était déjà associé à la session, ce qui signifie que l'objet X est associé à cet attribut dans la même session, donc Y peut ' t être sauvegardé ou mis à jour et affecter également cet attribut.
Comment puis-je retirer l'objet de la session X de sorte qu'il est plus associé à cet attribut
J'ai essayé d'utiliser au lieu de fusionner saveOrUpdate
et il fonctionne très bien, mais est-ce la même chose que saveOrUpdate
? Je veux dire, puis-je m'en servir pour ajouter de nouveaux enregistrements ou les mettre à jour?
Je l'ai déjà essayé, mais ça ne fonctionne pas –
Pouvez-vous expliquer pourquoi vous avez même besoin de deux références, X et Y, pour le même objet? Je pense qu'hibernate garantit qu'au sein d'une session, il ne peut y avoir qu'une seule représentation en mémoire de cet objet, donc X et Y font référence à la même entité. Je pense que vous devrez supprimer l'une des références d'objet dans votre code, donc X ou Y devra aller quand vous lierez vos objcets ensemble. Ma compréhension: si vous supprimez X en utilisant session.evict(), cela supprimera également Y du cache de premier niveau d'hibernate. Je suppose que c'est pour ça que ça ne marche pas. Mais vous ne pouvez pas supprimer X et ne pas supprimer Y. –
Ok dans mon cas X a un ensemble de Bs, et la couche de présentation prend cet ensemble et ajouter/mettre à jour/supprimer Bs, lors de l'enregistrement ou de la mise à jour je veux savoir quels éléments cet ensemble enlevé, donc je charge Y avec le même ID de X et de comparer entre les deux, puis en mettant à jour X puis en essayant de le sauvegarder jette le problème –