(Hibernate - Banco de Dados) Dúvida Mapeamento com Anotações[RESOLVIDO]

Boa Tarde Pessoal tenho uma grande dúvida sobre mapeamento e associações no hibernate, segue minha dúvida:

Suponhamos que eu tenha três tabelas:

TABELA FEIJAO
----> ID
----> TIPO

TABELA MARCA
—> ID
—> NOME_MARCA

TABELA FEIJAO_MARCA
----> ID
----> ID_FEIJAO
----> ID_MARCA
----> DATA

Nestes Casos como ficaria o mapeamento no hibernate? Como a tabela FEIJAO_MARCA possui 2 atributos fora os IDS, que seria o ID da tabela e a DATA seria criado uma classe específica para FeijaoMarca e os ids “ID_FEIJAO” e “ID_MARCA” virariam chaves compostas?

mais ou menos assim

Tabela:

create table feijao(
id_feijao int not null auto_increment,
tipo varchar(10) null,
primary key (id_feijao)
);

create table marca(
id_marca int not null auto_increment,
nome_marca varchar(10) null,
data date null,
primary key (id_marca)
);

create table feijao_marca(
id_marca int not null,
id_feijao int not null,
data date null,
primary key (id_feijao, id_marca),
constraint fk_feijao_marca_marca
foreing key (id_marca) references marca (id_marca),

constraint fk_feijao_marca_feijao
foreing key (id_feijao) references feijao (id_feijao)
);[/code]

As classes 

[code]@Entity
@Table(name="feijao")
public class Feijao implements Serializable{

@Id
@GeneratedValue
@Column(name="id_feijao)
private Integer feijao;

@Column(name ="tipo")
private String tipo;

@Column(name="data")
private Date data;

//Mapeamentos muitos para muitos
@ManyToMany 
 // o JoinTable indica qual a tabela que faz a relacionamento. O JoinsColumns e Inverse indica as chave primaria das tabelas
@JoinTable(name ="feijao_marca", joinColumns = {@JoinColumn(name ="id_marca")}, inverseJoinColumns = {@JoinColum(name="id_feijao")})

}

@Entity
@Table(name="marca")
public class Marca implements Serializable {
  
@Id
@GeneratedValue
@Column(name="id_marca")
private Integer marca;

@Column(name="nome_marca")
private String nome;
}

feedbeck? vou acompanhar… Vlw

Jardel Obrigado isso é mais ou menos o que eu já pensava mais tipo a minha situação é a seguinte:

Todo Feijão Pode ter mais de uma marca por esse motivo eu coloquei que haveria o ID na tabela de FEIJAO_MARCA por que eu queria diferenciar os dados na tabela de FEIJAO_MARCA pelo id, mais pelo que vejo a solução seria pegar o id_marca e id_feijão e fazer uma chave composta?

[quote=brluan]Jardel Obrigado isso é mais ou menos o que eu já pensava mais tipo a minha situação é a seguinte:

Todo Feijão Pode ter mais de uma marca por esse motivo eu coloquei que haveria o ID na tabela de FEIJAO_MARCA por que eu queria diferenciar os dados na tabela de FEIJAO_MARCA pelo id, mais pelo que vejo a solução seria pegar o id_marca e id_feijão e fazer uma chave composta?[/quote]

Por isso o mapeamento de Muitos para Muitos @ManytoMany, pois um feijão pode ter mas de uma marca.
Na chave composta voce teria a primary key de feijao e marca.

Jardel meus grande agradecimento por você me ajudar eu ainda não conseguia compreender o motivo que em todos os exemplos a tabela de relação many-to-many não possuía um id, agora esta bem esclarecido e minha dor de cabeça com o mapeamento vai diminuir muito já que a minha maior dificuldade ainda são as associações, Agradecido mesmo. Mais uma vez muito obrigado.