[Hibernate] Foreign Key com mapeamento de herança TABLE_PER_CLASS
9 respostas
R
raphaelcmacedo
Olá pessoal,
Estou com uma situação na qual gostaria de criar uma generalização entre classes que eram independentes. Para não apagar todas as tabelas e relacionamentos posteriores achei melhor usar o tipo de herança table per class, seria mais ou menos como o banco já está modelado hoje.
A minha dúvida é: Como relacionar essa tabela depois a uma outra de forma polimórfica. Ex: Imagine uma classe pessoa com heranças de pessoa física e jurídica e tenho uma outra classe, por exemplo documento, que teria uma pessoa (independente de qual tipo daí a necessidade do polimorfismo aqui). Como criar a chave estrangeira na tabela Documento para que ela se relacione com as duas tabelas PessoaFisica e PessoaJuridica e como mapear isso no hibernate para ficar com um só campo:
Não, mas eu preciso mapear a pessoa dentro do documento, um documento tem uma pessoa entendeu?
É aquele exemplo que eu citei acima mesmo, mas a questão é que eu preciso de uma chave estrangeira em um campo só mas que pode estar em duas tabelas diferentes.
D
darklordkamui
Se é o que entendi... seria mais facil vc criar uma tabela com os dados comuns entre juridico e fisica que no caso seria o Pessoa... e dentro de Pessoa teria Juridico e Fisico... o Hibernate trabalharia bem fazendo assim... e voce colocaria somente as informações necessarias em suas respectivas tabelas...
bom é um sugestão...
ficaria algo mais ou menos assim... e voce nao precisaria mais usar herança;...
Acho que não cara, daí eu perderia os beneficios da herança. Analisando aqui, acho que vou utilizar um InheritanceType.JOINED. Usei isso em outro projeto e acho que vai atender mais ou menos. De qualquer forma obrigado aew. Se alguem ai tiver alguma outra ideia…
Blza, mas isso ai eu implementei, só que a ultima opção…
Daí a minha dúvida é como fazer a chave estrangeira de uma outra tabela para a pessoa. Veja que no ultimo exemplo são duas tabelas diferentes, entendeu?
T
tmvolpato
A classe Pessoa é aonde tem a herança certo?
e em qual classe você quer chamar a classe Pessoa?
já sabe o tipo de relacionamento entre essas classes?