Hibernate: ManyToMany - Pequena Dúvida

Boa noite pessoal :smiley:

Estou com uma pequena dúvida com relação a este procedimento no hibernate.
Eu consegui gerar (a partir do hibernate) uma tabela no banco que é a relação de duas outras tabelas. Nesta tabela nova eu tenho id das duas tabelas, porém eu queria além dos ids, incluir outros campos.

Segue o modelo abaixo:

[code]//SubCategoria.java
@Entity
@Table
public class SubCategoria implements java.io.Serializable {

private Long id;
private String nome;
private Set<Modelo> modelos = new HashSet<Modelo>();

//getters and setters

@ManyToMany(targetEntity = Modelo.class, cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "SubCategoria_Modelo", joinColumns = {@JoinColumn(name = "subCategoria_id")}, inverseJoinColumns = {@JoinColumn(name="modelo_id")}) 
public Set<Modelo> getModelos() {
	return modelos;

}

//Modelo.java
@Entity
@Table
public class Modelo implements java.io.Serializable {

private Long id;
private String nome;
private Set<SubCategoria> subCategorias = new HashSet<SubCategoria>();

//getters and setters

@ManyToMany(mappedBy = "modelos", targetEntity = SubCategoria.class)
public Set<SubCategoria> getSubCategorias() {
	return subCategorias;
}

}[/code]

Quando eu rodo a aplicação, isso me gera a tabela associativa SubCategoria_Modelo, com os campos subCategoria_id e modelo_id.
Como faço pra criar um outro campo a partir do hibernate?

Desculpem se parece uma pergunta idiota, é que nunca tinha trabalhado com uma relação muitos pra muitos no hibernate e fiquei perdido.
Obrigado! :smiley:

Veja se isso aqui te ajuda: http://www.hiberbook.com/HiberBookWeb/learn.jsp?tutorial=19mappingmanytomanyrelationships

Rafael

Se tu quer uma tabela com mais campos, ela deixa de ser uma tabela associativa.

Talvez criando uma outra entidade com relacionamentos com essas duas que tu postou resolva o problema.

Rafael,
Obrigado pelo link, deu pra entender legal como funciona essa annotation. :smiley:
Acredito que o que eu quero fazer não vai ser possível então, pois como o Migore falou, se eu incluir um campo comum a tabela deixa de ser associativa, então vou ter que criar uma classe mais ou menos assim:

[code]public class SubCategoriaModelo {

private SubCategoria subCategoria;
private Modelo modelo;
private String outroCampo;

//getters and setters

@ManyToOne(fetch = FechType.LAZY)
@JoinColumn
public Modelo getModelo() {return modelo;}

}[/code]

e nas classes SubCategoria e Modelo:

[code]public class Modelo{

private Long id;
private String nome;
private Set<SubCategoriaModelo> subCategoriaDeModelos = new HashSet<SubCategoriaModelo>();

//getters and setters
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "modelo")
public Set<SubCategoriaModelo> getSubCategoriaModelos() {return subCategoriaDeModelos;}

}[/code]

Então o único jeito que tenho é esse né?