Erro com relacionamento Many-To-Many com inverseJoinColumn no Hibernate/JPA

1 resposta
danieldestro

Estamos usando Hibernate 3 como implementação JPA, rodando no Oracle Weblogic 10 R3.

Todos os relacionamentos Many-To-Many que possuem inverseJoinColumn com nomes repetidos estão dando erro, conforme exemplo abaixo:

@JoinTable( name = "SO009T", joinColumns = { @JoinColumn(name = "CD_PAIS_RPO", referencedColumnName = "CD_PAIS_RPO"), @JoinColumn(name = "NU_OFI_CTTE", referencedColumnName = "NU_OFI")}, inverseJoinColumns = { @JoinColumn(name = "CD_PAIS_RPO", referencedColumnName = "CD_PAIS_RPO"), @JoinColumn(name = "NU_OFI_CTO", referencedColumnName = "NU_OFI") }) @ManyToMany(fetch = FetchType.LAZY) private List<Oficina> oficinas;

@JoinTable( name = "SO004T", joinColumns = { @JoinColumn(name = "CD_PAIS_RPO", referencedColumnName = "CD_PAIS_RPO"), @JoinColumn(name = "NU_OFI", referencedColumnName = "NU_OFI")}, inverseJoinColumns = { @JoinColumn(name = "CD_PAIS_RPO", referencedColumnName = "CD_PAIS_RPO"), @JoinColumn(name = "NU_FOR", referencedColumnName = "NU_FOR") }) @ManyToMany(fetch = FetchType.LAZY) private List<Fornecedor> fornecedores;

O erro: [color=red]INFO: building session factory net.sf.hibernate.MappingException: Repeated column in mapping for collection[/color]

Não conseguimos achar nenhuma solução, alguma idéia do que possa ser?

Os relacionamentos Many-to-Many que não possuem essa redundância de nomes funcionam perfeitamente.

Obrigado.

1 Resposta

danieldestro

Curiosamente, se você colocar um espaço em branco em um dos lados, funciona. Mas não dá para garantir até onde isso funciona:

Mas percebemos que a tabela de relacionamento deveria ter 4 campos e não apenas 3, como está no modelo. Com 3 campos a gente garante uma integridade de dados que é requisito do sistema, porém afeta o funcionamento do Hibernate. Com OpenJPA isto não ocorre.

Criado 31 de agosto de 2009
Ultima resposta 3 de set. de 2009
Respostas 1
Participantes 1