Hibernate gerando um modelo esquisito [RESOLVIDO]

Olá!

Estou fazendo alguns testes com EJB3+JPA (implementação do Jboss 5, que usa Hibernate) e quando as tabelas foram geradas eu achei um tanto estranho o modo como ele modelou um relacionamento.

Trata-se do clássico exemplo da classe Nota, que apresenta uma coleção de ItemsNota. Os ItemsNota, por sua vez, tem referência à Nota. Essas são as classes (algumas partes foram retiradas):

[code]@Entity
@Table(name=“notas”)
public class Nota {
// …
@Id
public int getId() {
return id;
}
// …
@OneToMany
public List getItens() {
return itens;
}
// …
}

@Entity
@Table(name=“itens_nota”)
public class ItemNota {
// …
@Id
public int getId() {
return id;
}
// …
@ManyToOne
public Nota getNota() {
return nota;
}
// …
}[/code]

A meu ver, a criação das tabelas devia ser a seguinte: uma tabela notas, com o campo ID, e uma tabela items_nota, com os campos ID e ID_NOTA. Isso seria suficiente para pesquisar uma Nota com todos os seus itens e também um item com sua respectiva nota.

No entanto, vejam o que ele criou:

Tabela notas: +-------+ | Field | +-------+ | id | +-------+ Tabela itens_nota: +---------+ | Field | +---------+ | id | | nota_id | +---------+ Tabela notas_itens_nota: +----------+ | Field | +----------+ | notas_id | | itens_id | +----------+
Ou seja, além dos campos que eu estava esperando, ele criou uma tabela “DE-PARA” ! Isso está me parecendo muito estranho, pois além de redundante (o campo FK notas_id deveria dar conta do relacionamento) esse recurso da tabela DE-PARA deveria ser usada apenas em relacionamentos Many-to-Many.

Como devo lidar com isso? Fiz algo errado nas classes/anotações do relacionamento? Ou tenho que simplesmente aceitar o que o framework achar melhor? Se eu quiser fazer uma carga manual tenho que respeitar tanto o relacionamento da ForeignKey quanto o da tabela de-para?

Valeu!

Tente especificar a propriedade mappedBy do seu @OneToMany.
Especifique melhor seu relacionamento que ele vai adaptando a criação do banco.

Excelente…
Depois de colocar o mappedBy o banco ficou “certo”.
Valeu!

Como ficou o formulario digo JSP ou XHTM !