Grande Andrei.
O Hibernate, sendo uma ferramenta para mapeamento objeto-relacional, terá que trabalhar com duas classes.
A primeira, tera o nome da tabela propria (relacionamento muitos para muitos) seguido de id (identificadora), a segunda terá apenas o nome da tabela propria.
No seu caso, Produtos e Vendas. Então, vejamos. Uma classe terá o nome de protudos_vendas_id (sem método main, apenas construtor), que por sua vez instanciará dois objetos a partir das classes produtos e vendas.
Ex.: private Produtos codprod;
private Vendas codvenda;
Em seguida será feito o encapsulameto desses objetos (criação do métodos setters e getters). Criada a tabela Produtos_Vendas_ID, voce criará a classe Produtos_Vendas. Nessa classe, voce criará um objeto a partir da classe Produtos_Vendas_ID. Pra facilitar a compreensao, de o nome desse objeto de “composite_id” (chave composta), e encapsule-o também.
Feito isso, partirá para o mapeamento. Aqui é que vem o “x” da questão. Criado o novo arquivo xml (produtos_vendas.hbm.xml), primeiro, como voce já deve saber, precisa apontar qual classe será mapeada para a criaçao da tabela no SGBD, certo? Então, aponte a classe Produtos_Vendas (sem o ID). Segundo, informe qual objeto deverá ser a chave composta, sim sim, chave composta e não primária. Utiize o atributo do Hibernate, “composite-id” e informe o objeto criado a partir da classe Produtos_Vendas_ID. Detalhe, informe que esse objeto encontra-se na Classe Produtos_Vendas_ID. Por mais que voce o tenha instanciado dentro de Produtos_Vendas, voce apenas o instanciou. Para ser localizado, deve ser informada a classe Produtos_Vendas_ID. Logo após, vem a parte de informar o relaciomaneto muitos para muitos, propriamente dito. Então, utilize o atributo ", para cada objeto.
Ai, voce deve estar se perguntando: “Mas, não é muitos para muitos, por aqui está muitos para um?”. Muito simples, estamos criando manualmente a tabela própria, ou seja, as classes Produtos e Vendas terão ligação um para muitos com a tabela propria produtos_vendas, o que caracteriza N-N com produtos e vendas.
Assim que receber esse recado… te mando a parte de persistencia. ok?
Valeu…
Qualquer coisa… mande e-mail.
Fui…