La sauvegarde/mise à jour de l'objet avec hibernate

Ma classe Foo a la méthode:

 protected void saveMany(Collection<T> many) {  
    for(Object one : many) {
            one = session.merge(one); //also tried this commented out
            session.saveOrUpdate(one); //session.merge(one);   
        }

Essayé d'utiliser saveOrUpdate et également de fusionner, mais les deux m'ont donné cette exception:

Error: Invocation of method 'saveMany' in class Foo threw exception class org.hibernate.HibernateException : org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: [Bar#581301]

Comment résoudre ce problème?

Note de côté:

Quand je tronquer ma table, le gain en partie fonctionne, mais quand j'ai le tableau rempli, et exécutez une nouvelle fois cette méthode, donc la mise à jour de la table, il ne parvient pas, avec cette exception

Lorsque vous avez appelé merge() avez-vous pensé à appeler saveOrUpdate() après, à l'exemple retourné de la fusion() et ne pas l'instance que vous avez passé en fusion() comme paramètre? Voir ma réponse ici
non je n'ai pas l'appeler saveOrUpdate à tous, je viens d'appeler la fusion. Tu veux dire quelque chose comme cela? session.saveOrUpdate(session.merge(one)), il dit : The left-hand side of an assignment must be a variable
Je l'ai fait : one = session.merge(one); session.saveOrUpdate(one);
stackoverflow.com/questions/1074081/...
Bon, je crois que j'ai trouvé d'où cela se passe, mais comment puis-je obtenir la première instance de l'objet de hibernate contexte?

OriginalL'auteur Jaanus | 2012-08-13