JPA + Chave Composta

3 respostas
ericomtx

Eu tenho uma tabela de um banco de dados legado onde a chave da mesma é composta por dois atributos

Eu criei uma classe auxiliar chamada ItemPK contendo os dois atributos necessários e com a annotation @Embeddable na classe que compõe a chave composta

na classe onde eu utilizo a chave composta chamada Item que é um pojo eu tenho :

@EmbeddedId
private ItemPK id;

eu queria acessar em uma query um dos atributos da minha ItemPK

Isso é possível ?

3 Respostas

Abdon

Este lance da query dar erro, não gerando o join é uma limitação de ferramentas ORM, deve ser este um dos motivos do prq no site do hibernate esta especificado que é melhor trabalhar com chaves primarias, evitando chaves composta, criando um id unico e o que seria a sua chave composta como uma unic constrant
Bem existe uma gambi (POG) para resolver este problema que é mapear o relacionamento fora da sua chave primaria so que com insertable=false e updateble=false, assim, não é possivel inserir nem atualizar pelo local errado, apenas sendo utilizando para gerar as consultas corretamente.

ericomtx

Desculpa mas não entendi a resolução

Eu descarto a ItemPK e mapeio os atributos no meu pojo mesmo ?

Abdon

Não, não descarte o que vc já fez, isto ira continuar da mesma forma. Alem do que vc já fez adiciona os mapeamentos que vc quer ter acesso no pojo, so que como insertable=false, updatable=false. Com isto, apartir deste mapeamento não ira acontecer nada quando vc fizer um update ou save, ele so sera utilizado para gerar o join na sua consulta.

Criado 31 de julho de 2007
Ultima resposta 31 de jul. de 2007
Respostas 3
Participantes 2