Como mudar o comportamento default do Hibernate para elementos de coleções de entidades persistentes

Olá pessoal,

Estou passando por um problema com a atualização de elementos de uma coleção de entidades no Hibernate.
Eu tenho uma classe GrupoUsuario ao qual existe um relacionamento may-to-many com a classe Usuario, logo a minha classe possui o seguinte mapeamento:

@Entity
@Table(name=“GRUPO_USUARIO”)
@SequenceGenerator(name=“SEQ_GRUS_CD_ID”,
sequenceName=“SEQ_GRUS_CD_ID”)
public class GrupoUsuario {

   /**
 * Identificador do grupo
 */
@Id
@Column(name="GRUS_CD_ID", nullable=false, length=22)
@GeneratedValue(strategy=GenerationType.SEQUENCE,
				generator="SEQ_GRUS_CD_ID")
private int id;

    /**
 * Conjunto de usuários contidos no grupo.
 */
@ManyToMany(cascade = CascadeType.MERGE)
@JoinTable(name="USUARIO_GRUPO_USUARIO", 
		joinColumns = {@JoinColumn(name="GRUS_CD_ID")},
		inverseJoinColumns = {@JoinColumn(name="USPR_CD_ID")})
private Set<User> users =  new HashSet<User>();

}

Eu tenho a tabela de ligação USUARIO_GRUPO_USUARIO que guarda as duas chaves do relacionamento, no momento em que eu seto o conjunto de usuário com um novo conjunto ou removo o conjunto do objeto GrupoUsuario isso funciona corretamente pois o conjunto é um objeto de classe GrupoUsuario e por default quando você troca de lista o hibernate atualiza sua coleção.
Mas o problema seria com os elementos da lista, no caso de edição onde eu já tenho alguns usuários em meu grupo de usuário, quando eu adiciono usuário nesse conjunto já persistido "grupoUsuario.getUsers().add(user); ou removo do meu conjunto “grupoUsuario.getUsers().remove(user)”, isso não faz efeito algum para o hibernate pois ele só trata do objeto conjunto e então ele não adiciona e nem tira nada da minha tabela de ligação =/.

Gostaria de saber como faço para tirar esse comportamento default dele para que eu possa também gerenciar os elementos dessa lista. :cry:

Obrigado a todos
um abraço!

So para saber… esse seu trecho de codigo, está envolvido pela abertura de um EntityManager, um begin na transação e um commit no fim?

EntityManager em = emFactory.createEntityManager();

GrupoUsuario grupoUsuario = em.Find( GrupoUsuario.class, 1 ); // id

em.getTransaction().begin();
grupoUsuario.getUsers().add(user); 
em.getTransaction().commit();
em.close();

Isso deveria fazer com que o registro entrasse na tabela (na tabela de relacionamento)

Sendo que, o objeto user ja deve existir no banco, é claro.

E outra coisa muito importante… o objeto grupoUsuario deve estar no contexto persistente… se nao ele nao vai gravar… ou seja, vc nao pode carregar o grupoUsuario e fechar o EntityManager…

Isso aí nao funciona???