Jpa/hibernate com fk composta herdada!

1 resposta
M

Pessoal gostaria de uma ajuda no seguinte problema:

Tenho uma tabela A(pk_a), tabela B(pk_b,fk_a) e tabela C(pk_c,fk_a,fk_b). As duas fk de C são pegas na tabela B. Então fiz o seguinte:

------------
 @ManyToOne 
    @JoinColumns( { 
    	@JoinColumn(name = "fk_a", referencedColumnName = "fk_a", nullable = false),
    	@JoinColumn(name = "fk_b", referencedColumnName = "fk_b", nullable = false)  }) 
    private C_Table c_table;
---------------

mas o hibernate reclama:
Caused by: org.hibernate.MappingException: Unable to find column with logical name: fk_a in b_table

Não existe “@Column(name=“fk_a”)”, pq fk_a vem da tabela A e vira fk na tabela B. Deu para enter o problema? a fk de B é usada com fk composta em C, porém em B não existe um
@column para definir o campo, isso com que a aplicação nem levante…

Alguma idéia, desde já agradeço

1 Resposta

M

marciano1:
Pessoal gostaria de uma ajuda no seguinte problema:

Tenho uma tabela A(pk_a), tabela B(pk_b,fk_a) e tabela C(pk_c,fk_a,fk_b). As duas fk de C são pegas na tabela B. Então fiz o seguinte:

------------
 @ManyToOne 
    @JoinColumns( { 
    	@JoinColumn(name = "fk_a", referencedColumnName = "fk_a", nullable = false),
    	@JoinColumn(name = "fk_b", referencedColumnName = "fk_b", nullable = false)  }) 
    private C_Table c_table;
---------------

mas o hibernate reclama:
Caused by: org.hibernate.MappingException: Unable to find column with logical name: fk_a in b_table

Não existe “@Column(name=“fk_a”)”, pq fk_a vem da tabela A e vira fk na tabela B. Deu para enter o problema? a fk de B é usada com fk composta em C, porém em B não existe um
@column para definir o campo, isso com que a aplicação nem levante…

Alguma idéia, desde já agradeço

O problema esta na ordem da chave composta:

------------
 @ManyToOne 
    @JoinColumns( { 
    	@JoinColumn(name = "fk_b", referencedColumnName = "fk_b", nullable = false)  ,
    	@JoinColumn(name = "fk_a", referencedColumnName = "fk_a", nullable = false)}) 
    private C_Table c_table;
---------------
Criado 5 de fevereiro de 2010
Ultima resposta 5 de fev. de 2010
Respostas 1
Participantes 1