Hibernate: como mapear três chaves primárias?  XML
Índice dos Fóruns » Certificação Java
Autor Mensagem
l1nkPJ
Debugger
[Avatar]

Membro desde: 09/06/2007 00:00:00
Mensagens: 74
Offline

Boas.

Eu estou usar uma tabela que tem três chaves primárias.
O problema é que não sei como mapear três chaves primárias. Pelo que li isto deve ficar +/- assim:




O problema é que quando digo o compilador assume que tenho na minha tabela um campo "id" e dá erro porque nao encontra o POJO referente a essa variável......

O que estou a fazer mal?

Obrigado pela ajuda.
[WWW] [ICQ]
WagnerFullPJ
Thread.start()
[Avatar]

Membro desde: 22/06/2004 00:00:00
Mensagens: 38
Offline

olá, mano...

você poderia passar a codificação da classe que criou e o mapeamento dela pro hibernate? Assim fica melhor de te dar resposta compreensível.

valeu





"O meu socorro vem do Senhor, que fez os céus e a Terra."
[WWW] [ICQ]
l1nkPJ
Debugger
[Avatar]

Membro desde: 09/06/2007 00:00:00
Mensagens: 74
Offline

Ok.

Aqui está a classe:



O mapeamento está aqui:



As 3 variáveis são chaves primárias.
Obrigado pela ajuda desde já.[/code]
[WWW] [ICQ]
WagnerFullPJ
Thread.start()
[Avatar]

Membro desde: 22/06/2004 00:00:00
Mensagens: 38
Offline

Quando se trabalha com chave primária composta, o Hibernate precisa
de mais uma classe auxiliar para definir essa chave primária

Assim sendo, crie uma interface chamada PrimaryKey



Vamos fazer um pequeno exemplo: uma classe Pessoa que tem os seguintes atributos: cpf, rg, sexo , nome e data de nascimento. Suas chaves primárias são cpf e rg(só exemplo!!!)

código da chave primária:


Código da classe Pessoa:


Feito isso, lá no mapeamento do hibernate, essa classe exemplo fica assim:


Espero que esse exemplo te ajude na compreensão. Só um comentário: eu vi na documentação do Hibernate que o uso de composite-id é fortemente desaconselhável, mas cá pra nós, essa abordagem tá resolvendo um grande problema que eu tive de importação de grandes massas de dados usando persistência.




"Pela graça sois salvos por meio da fé, e isso não vem de vós, é dom de Deus"
[WWW] [ICQ]
pedrobuskoPJ
Virtual Machine Man
[Avatar]

Membro desde: 14/11/2006 00:00:00
Mensagens: 677
Offline

só uma observação.....essa recomendação do Hibernate para o não uso de chave composta, não apenas quando estamos utilizando o Hibernate....

em qq modelo de banco, chaves compostas devem ser usadas apenas em casos extremos....e também no caso de tabelas associativas em relacionamentos many-to-many...

flw
[WWW] [ICQ]
 
Índice dos Fóruns » Certificação Java
Ir para:   
Powered by JForum 2.1.8 © JForum Team