JPA relacionamento NxN

Oi Pessoal minha situação é a seguinte:
Tenho a tabela usuario e a tabela disciplina com um relacionamento NxN entre elas.
Ao persistir os dados não há problema, todavia ao tentar recuperá-los, durante a sessão isto não ocorre, somente se saio e entro de novo do sistema é que é dado update na lista

@Entity
@Table(name = "usuario")
public class Usuario implements Serializable {

// alguns atributos..

@ManyToMany(mappedBy = "usuarios", cascade = CascadeType.ALL)
private List<Disciplina> disciplinas = new ArrayList<Disciplina>();


// getters e setters
@Entity
@Table(name = "disciplina")
public class Disciplina implements Serializable {
// outros atributos

@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name= "participa")		
private List<Usuario> usuarios = new  ArrayList<Usuario>();

// getters e setters

Já tentei na classe usuario dar um mege e um find após persistir os dados, mas ele nao recupera a lista de disciplinas do usuario.
Alguem pode me dar uma luz de como atualizar os dados do usuário???
[]s e desde já obrigado

Não entendi, teu problema é no select ou no update?
Se for no update, como você está fazendo com seu entitymanager? Está dando flush ou commit após o merge?

[quote=drsmachado]Não entendi, teu problema é no select ou no update?
Se for no update, como você está fazendo com seu entitymanager? Está dando flush ou commit após o merge?[/quote]

Problema no update mesmo, estou dando commit apos o merge.

Poste a classe em que isto está sendo realizado.

Estou populando o relacionamento NxN desta maneira, tentei dar um merge no usuario antes do commit, mas tb não funcionou.

public boolean cadastroUserToDisciplina(Usuario usuario, Disciplina disciplina){
		EntityManager em = JPAUtil.getInstance().getEntityManager();
		EntityTransaction tx = em.getTransaction();
		try {
			tx.begin();
			usuario = em.find(Usuario.class, usuario.getId());
			disciplina = em.find(Disciplina.class, disciplina.getId());
			usuario.getDisciplinas().add(disciplina);
			disciplina.getUsuarios().add(usuario);			
			disciplina = em.merge(disciplina);
			tx.commit();
			return true;
		}catch(Exception e ){
			tx.rollback();
			e.printStackTrace();
			return false;
		}finally{
			em.close();
		}
	}