Quelle est la bonne façon de ré-attacher des objets détachés en veille prolongée?

J'ai une situation dans laquelle j'ai besoin de ré-attacher des objets détachés pour une session hibernate, bien qu'un objet de la même identité n'existe pas déjà dans la session, ce qui va provoquer des erreurs.

Maintenant, je peux faire une de deux choses.

  1. getHibernateTemplate().update( obj )
    Cela fonctionne si et seulement si un objet n'existe pas déjà dans la session hibernate. Des Exceptions sont levées, indiquant un objet avec l'identifiant donné existe déjà dans la session quand j'en ai besoin plus tard.

  2. getHibernateTemplate().merge( obj )
    Cela fonctionne si et seulement si un objet existe dans la session hibernate. Des Exceptions sont levées quand j'ai besoin de l'objet à être dans une session plus tard si je l'utilise.

Compte tenu de ces deux scénarios, comment puis-je génériquement joindre séances d'objets? Je ne veux pas utiliser les exceptions pour contrôler le flux de cette solution du problème, car il doit y avoir une solution plus élégante...