Tabela intermediária quando se tem Muitos X Muitos

Opa,

Pessoal, estou fazendo um exemplo simples de Hibernate aqui, mas não consigo resolver a dúvida de como fazer a tabela intermediária da relação Muitos x Muitos ser preenchida.

Um Jogador TEM UMA OU MAIS marcas de Chuteiras
Uma marca de Chuteira É DE UM OU MAIS Jogadores.

O clássico exemplo do Muitos para Muitos.
Fiz o mapeamento, usando Annotations e ele até criou a tabela no banco de dados, mas quando salvo os objetos a tabela intermediária JOGADOR_CHUTEIRA não é preenchida, as outras (Jogador e Chuteira) são.
Como fazer isso? (Usando Annotations, por favor)

@Entity
public class Chuteira {
    @Id
    @GeneratedValue
    private int id;
    private String marca;
    @OneToMany
    private List<Jogador> jogador;
//getters e setters
@Entity
public class Jogador {
    @Id
    @GeneratedValue
    private int idJogador;
    private String nome;
    private int idade;

    @OneToMany
    private List<Chuteira> chuteira;
//getters e setters

Ele cria tabela (fazendo a junção do id das duas certinho, mas não preenche).

Agradeço desde já! :slight_smile:

Dê uma olhada no link.
Lá tem alguns exemplos de mapeamento hibernate.

[quote=thiagoprocaci]Dê uma olhada no link.
Lá tem alguns exemplos de mapeamento hibernate.

http://thiagoprocaci.blogspot.com/2009/04/mapeamento-objeto-relacional-com.html[/quote]

Opa,

Valeu pelo link Thiago, mas no seu exemplo de mapemanto a classe ProfessorTurma dá erro na linha:

Dizendo que: “An entity class must be a top level class”.
Tirando o public da declaraçao não adianta.

tente tirar o Serializable da classe interna.

era pra ter um manytomany nas duas classe ao inves de onetomany

É verdade Arthur, e eu fiz isso, mas mesmo assim a tabela intermediária criada automaticamente por ele (usando aquele SchemaExport) não é preenchida quando salvo os objetos.
Quer dizer então que eu preciso criar também uma classe da tabela intermediária (a que quebra os ManyXMany)?

exemplo. tenho um manytomany entre perfil e usuario. ao salvar um usuario vejo o que eu faço

    clear();
    GUsuario usuarioAdd = (GUsuario) getSession().get(GUsuario.class, codUsuario);
    /*Gravamdo as permissoes*/
     for (int i = 0; i < codPerfil.length; i++) {
           GPerfil perfil = (GPerfil) getSession().get(GPerfil.class, codPerfil[i]);
           perfil.getUsuarios().add(usuarioAdd);//<<<<<<pega a lista na classe e adiciona. Essa lista tem que ter algo
           salvarOuAlterar(perfil);
     }

relacionamento na classe

@ManyToMany(fetch=FetchType.LAZY)
    @JoinTable(name = "_GPERFILUSUARIO",
        joinColumns = {
            @JoinColumn(name = "CODPERFIL")
        },
        inverseJoinColumns = {
            @JoinColumn(name = "CODUSUARIO")
        }
    )
    private List<GUsuario> usuarios;

na outra classe tem a mesma coisa só que referenciando a perfil. e codusuario vem em joincolumn e não em inversejoincolumn

tamus ai!!!