JPA mapeamento

Bom dia pessoal, estou com uma dúvida nos mapeamentos JPA.

Seguinte, gostaria de algum exemplo de como eu poderia fazer um mapeamento
entre duas entidade ManyToMany, com entidade resultante, ou seja, esse mapeamento
vai gerar uma nova entidade que conterá dados especificos para ela.

Obrigado.

No google voce acha um monte de exemplos, so pesquisar

naum esperar tudo de mao beijada

Calma aí. Vamos dar pelo menos um início de luz para o cara.
O que vai acontecer é que vai ter uma nova classe com os dados da tabela associativa.

Para mapear as 2 chaves primárias que compoem a chave da tabela associativa você pode usar uma classe que tenha como atributos objetos das 2 classes com as quais essa irá se relacionar.

Fica mais ou menos assim.

Você cria uma classe do meio e uma classe para a pk da classe intermediária.

A classe do meio vai ter um atributo da classe da pk da intermediária e os atributos dela.
Essa classe da pk da intermediária vai ter relacionamentos @ManyToOne para as classes com a qual você quer relacionar. Ela também recebe uma anotação @EmbeddableId

A classe do meio, receberá a anotação @Embeddable.

Foi só uma explicação rápida.Procura no google para ver exemplos práticos.
Aqui mesmo devem ter vários.
Boa sorte.

Você não precisa criar necessariamente a classe intermediaria, se ela não tiver algum atributo que não sejam as PK.

Ex:

Classe Produto.
Classe Fabricante.
Classe Produto_Fabricante (Criada automaticamente).

Classe Produto tem:

@ManyToMany
	@JoinTable(name="Produto_Fabricante",
		joinColumns={@JoinColumn(name="Produto_id")} , 
		inverseJoinColumns={@JoinColumn(name="Fabricante_id")})
	private List<Fabricante> fabricantes;

// getter e setter.

Pronto vc fez um ManyToMany simples.
Você nao precisa criar uma classe intermediaria e nem precisa fazer um relacionamente bidirecional, ou seja, você so vai indiciar “ManyToMany” na classe Produto, que no meu ponto de vista, seria cadastrado após o cadastro dos fabricantes.

Obrigado lele_vader por suas dicas, pelo que vejo no ato de minha humilde presença aqui, o sr CristianPalmaSola10, não deve conhecer nada do que estamos falando, se conhecesse tbm colocaria sua dica. Caro colega não tente fazer média de um assunto que não conhece ok?

att.

Ola, giovanni_dalfre, minha dúvida realmente é quando tem campos além de pk, tu teria algum exemplo?

Hummm…

Bom se você tem mais atributos você precisa criar a classe intermediaria…
infelizmente eu já vi mas não tenho um exemplo aqui.

Creio que seja algo do tipo:

Classe Produtos:

@ManyToMany
	@JoinTable(name="Produto_Fabricante",)
	private List<Fabricante> fabricantes;

Classe Produto_Fabricante (Necessariamente o mesmo nome indicado no JoinTable) :

public class Produto_Fabricante{
  
     @ManyToOne
     private Produto Produto_id;
     
     @ManyToOne
     private Fabricante Fabricante_id;

     private String attributo_extra;
}

Posso estar errado, pois fiz na mão aqui mesmo, mas creio que deve ser assim.

Se você quiser criar uma chave primária composta, composta pelas pk’s dos 2 lados pode usar a anotação @Embeddable e @EmbeddableId

Aqui tem um exemplo de criação de Classe com PK composta.

http://uaihebert.com/?p=41

Em CarPK você substitui as Strings pelas classes dos relacionamentos que a tabela intermediária tem.
Coloque @ManyToOne para cada um.

Em Car você inclui os atributos que você quer inserir.
Agora não sei se você vai ter que usar o relacionamento com @OneToMany ou @ManyToMany para a intermediária a partir das classes das extremidades.
Isso vou ficar devendo.

Vlw.