JPA e @ManyToMany com Classe de Associação

4 respostas
reolca

Pessoal,

Preciso criar um relacionamento NxM onde a tabela intermediária não guarda somente as chaves primárias das tabelas do relacionamento, mas também um outro campo com valor significativo. Por exemplo, uma tabela Pedido, outra Produto e a intermediária ItemDePedido (equivale a uma classe de associação na UML), que além das chaves primárias, guardaria também um atributo ‘quantidade’. Todos os exemplos que acho na web só tem as chaves primárias. :frowning:

Existe como fazer isso usando o JPA (não uso o Hibernate com EntityManager)? Se sim, como? Se não, como posso resolver o problema?

Um grande abraço!

4 Respostas

Avante

Olá!, Supondo que você tenha as classes Pedido, Produto e ItemDePedido.

Vc faz o mapeamento da classe ItemDePedido normalmente, colocando as associações com a classe Produto(@ManyToOne) e Pedido(@ManyToOne)
E na classe Pedido você relaciona (@OneToMany) com ItemDePedido.

Só uma coisa, ItemDePedido não poderia extender Produto? Assim vc “eliminaria” uma associação com Produto.

Abraços.

reolca

Olá!

O problema é que uma instância de ItemDePedido não tem um id próprio. Sua chave é composta (vinda de Pedido e Produto). Já vi alguma coisa sobre @idClass, @Embebbed, etc. Mas ainda não consegui funcionar.

A classe ItemDePedido é uma classe de associação mesmo. Não tem jeito de extender de Produto. ‘quantidade’ é um atributo que pertence ao relacionamento.

Um abração.

reolca

Só para completar a outra mensagem: por ser uma chave composta, eu não posso marcar um atributo como @manyToOne e como @Id ao mesmo tempo.

Abração.

A

É, eu ia falar pra você dar uma olhada em http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html . Não sei se vai ajudar muito, já que você disse que já leu sobre @Embeddable e @idClass

Criado 14 de outubro de 2006
Ultima resposta 22 de out. de 2006
Respostas 4
Participantes 3