Hibernate: modificar o objeto de um Set

Qual a maneira correta (ou mais elegante) para alterar um objeto de um Set quando esse é persistido pelo Hibernate? A princípio, estava simplesmente adicionando o objeto novamente ao Set, visto que automaticamente ficaria apenas uma instância do objeto.

Ocorre que ao tentar persistir o objeto através do Hibernate, a seguinte exceção é lançada: org.hibernate.NonUniqueObjectException

A solução que encontrei para esse problema foi verificar se objeto já existe no Set. Caso exista, então exclui primeiramente o objeto do Set. Por exemplo:

if (set.contains(object)) set.remove(object);

Para mim isso ficou parecendo uma gambiarra. Penso que a solução para alterar um objeto já existente no Set seja simplesmente adicioná-lo novamente.