Manytomany com atributos[RESOLVIDO]

Caros boa tarte.
Seguindo os fontes da LojaVirtual da Caelum (Ótima Apostila),
me deparei com a necessidade de guardar na tabela Venda_Musica o preco da
música, (a mesma pode sofrer aumento de preço) é possivel colocar esse atributo ?

@Entity
public class Venda {
@Id
@GeneratedValue
private Long id;
@ManyToMany
private List<Musica> musicas;
private String nome;
private String email;
private String cartao;
}

Muito obrigado :smiley:

Olá Roger, se entendi bem, voce tem a tabela Venda_Musica e nela o campo preco, nesse caso voce deverá criar uma classe para representar esta tabela e anota-la com @ManyToOne para se relacionar com as classes Venda e Musica e estas com @OneToMany, quando eu precisei disso, tinha foreignkeys custmizadas no meu banco, entao tive que explicita-las na classe, mas como voce esta fazendo um exemplo, talvez voce nem precise.

Qualquer coisa estamos ai :wink:

[quote=jvlouvem]Olá Roger, se entendi bem, voce tem a tabela Venda_Musica e nela o campo preco, nesse caso voce deverá criar uma classe para representar esta tabela e anota-la com @ManyToOne para se relacionar com as classes Venda e Musica e estas com @OneToMany, quando eu precisei disso, tinha foreignkeys custmizadas no meu banco, entao tive que explicita-las na classe, mas como voce esta fazendo um exemplo, talvez voce nem precise.

Qualquer coisa estamos ai :wink: [/quote]

jvlouvem obrigado pela resposta.
dessa forma a lista que hoje se encontra em venda, sumiria?
Não há uma maneira mais automática? do jeito que está passo a lista de “musica” para venda e a mesma persiste sem problemas
Na realidade estou desenvolvendo um sistema de compras e achei aquele exemplo perfeito para exemplificar a minha dúvida.
Valeu pela resposta, muito obrigado :smiley:

[color=blue]dessa forma a lista que hoje se encontra em venda, sumiria?[/color]
Sim, neste caso Venda teria uma lista de de objetos da classe “intermediaria” e essa classe teria um objeto da classe musica.

Mais ou menos assim para iterar:
for ( VendaMusica associativa : venda.getVendaMusicaList() ) {
Musica m = associativa.getMusica();
}

[color=blue]Não há uma maneira mais automática? do jeito que está passo a lista de “musica” para venda e a mesma persiste sem problemas[/color]

Bom eu tenho certeza que de forma automatica seria se esta tabela intermediaria tivesse só o id de venda e o id de musica, mas com tabela desse tipo que tenha atributo, não tenho certeza, mas acho que não tem não.

Abraços

Valeu jvlouvem, vou fazer testes.
Muito obrigado

Caro jvlouvem o que voce sugeriu funcionou muito bem.
Foi necessário fazer uma classe com dois ManytoOne e colocar
os atributos que desejava.
Muito obrigado pela resposta.
Até a próxima :smiley: