Dúvida com JPA

Pessoal precisamos de ajuda pra fazer este relacionamento.
Nós temos um sistema para avaliação institucional, onde usamos JPA com toplink.
Numa parte do sistema, existe o cadastro de chaves que são itens a serem avaliados na universidade, temos tbm t o cadastro de segmentos que é o cadastrado que vai avaliar esses itens.
Em uma terceira tela devemos selecionar o segmento, chave e gravar o relacionamento entre chave e segmento, onde o segmento pode avaliar várias chaves e cada chave pode ser avaliada por mais de um segmento. Ai que entra a dficuldade.
As tabelas no banco são: chaves, segmentos e chavesselecionadas.

  • em chaves temos o campo id, nome e peso
  • em segmentos o id e a descrição
  • em chavesselecionadas existe o id da chave e o id do segmento formando uma chave composta
    As classes Segmento e Chaves foram mapeadas e já funcionam para realizar as operações de CRUD. O problema é como definir a classe ChavesSelecionadas para realizar o cadastro do relacionamento.

Se alguém tiver idéia de como fazer, por favor nos ajudem.

A Classe ChavesSelecionadas não deve existir.
Apenas a Classe Chaves deve ter uma collection de Segmentos @ManyToMany e a Classe Segmento uma collection de Chaves @ManyToMany.

public class Segmentos implements Serializable {

    @Id
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "descricao", nullable = false)
    private String descricao;

    @JoinTable(name = "chavesselecionadas", joinColumns =  {
            @JoinColumn(name = "id_segmento", referencedColumnName = "id")
        }, inverseJoinColumns =  {
            @JoinColumn(name = "id_chave", referencedColumnName = "id")
        })
    @ManyToMany
    private Collection<Chaves> chavesCollection;
   
    Construtor, Getters e Setters ...
}
public class Chaves implements Serializable {

    @Id
    @Column(name = "id", nullable = false)
    private Integer id;

    @Column(name = "nome", nullable = false)
    private String nome;

    @Column(name = "peso", nullable = false)
    private int peso;

    @ManyToMany(mappedBy = "chavesCollection")
    private Collection<Segmentos> segmentosCollection;

    Construtor, Getters e Setters ...
}

Brigadão pela ajuda.
Só uma dúvida, quando é feito o cadastro de chaves selecionadas?

O jpa alimenta atabela chaves selecionadas automaticamente quando vc adiciona ou remove objetos das colections de qualquer uma das classes atraves das seguintes invormações:

    @JoinTable(name = "chavesselecionadas", joinColumns =  {   
            @JoinColumn(name = "id_segmento", referencedColumnName = "id")   
        }, inverseJoinColumns =  {   
            @JoinColumn(name = "id_chave", referencedColumnName = "id")   
        })   
    @ManyToMany