Consulta relacionamentos Many To Many Hibernate

Pessoal estou com dificuldade para fazer uma consulta onde o relacionamento é Many To Many.

O resultado final esperado é popular um dataTable com a seguinte listagem:

Descrição Cargo | Nome Treinamento
Gerente Adm | Treinamento 01
Gerente Adm | Treinamento 02
Gerente Adm | Treinamento 03
Gerente Adm | Treinamento 04
Gerente Adm | Treinamento 05
Auxiliar RH | Treinamento 01
Financeiro | Treinamento 04
Financeiro | Treinamento 05

A ligação entre as tabelas estão da seguinte forma:

@Entity 
Cargo 

@NotEmpty
@Column(nullable = false, length = 100, unique = true)
private String descricao;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, targetEntity=Treinamento.class)
@JoinTable(name = "cargo_treinamentos", joinColumns = @JoinColumn(name="cargo_id"), inverseJoinColumns = @JoinColumn(name = "treinamento_id"))	
private List<Treinamento> treinamentos;
/* Getters and Setters */

-----------------------------------------------------------------------

@Entity 
Treinamento

@NotEmpty
@Column(nullable = false, length = 100, unique = true)
private String descricao;

@ManyToMany(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, mappedBy="treinamentos", targetEntity=Cargo.class)
private List<Cargo> cargos;
/* Getters and Setters */

Alguem poderia me ajudar em como preencher esse dataTable…

Mas a consulta está funcionando? As classes retornam dados? Você vai popular uma JTable com um DefaultTableModel ou vai utilizar um próprio?

Qual foram as tabelas geradas ?

No banco de dados foi criando a tabela cargo_treinamentos conforme especificado no JoinTable da tabela cargo… minha dificuldade esta sendo em navegar de uma tabela para outro, uma vez que o relacionamento entre elas as deixam como um list…

Se eu usar a tabela treinamento como base, consigo popular o datatable com todos os treinamentos… mas nao consigo navegar para a tabela cargo para pegar a descricao do cargo pois cargo esta como list dentro de treinamento… assim vice e versa… se usar como base a tabela cargo nao consigo navegar para treinamento pois treinamento esta como list dentro de cargo…

sendo assim nao sei qual metoodo devo adotar para obter o resultado conforme descrito no inicio desse post…

Opa. Seu relacionamento esta correto, o que vc deve fazer eh fazer um loop aninhado, ou seja, acessa primeira a lista de cargo e para cada cargo vc dá um get nos treinamentos, na dúvida coloque o relacionamento como EAGER. Talvez valha a pena colocar esse loop aninhado no seu controller.