Generalização com Hibernate

4 respostas
J

Olá a todos, é o primeiro tópico aqui no guj, desde já agradeço pois atráves desta comunidade tenho aprendido muito…

Bem vamos direto ao assunto.

Tenho uma uma classe abstrata de fornecedor e suas sub classes físico e jurídico, adotei a generalização de dados onde as minhas tabelas no bando ficam assim :

fornecedor(PK codFornecedor)

fornecedor_fisico(PK codFornecedor, codFornecedorFisico)

fornecedor_juridico(PK codFornecedor, codFornecedorJuridico)

até aqui tudo bem, o uso de generalização do hibernate funciona legal, consigo inserir…

o meu problema é como vou trazer essa informação do banco de dados sendo que são duas tabelas distintas, em casos desse tipo em SQL usaria o UNION para no mesmo retorno trazer tanto fisico como juridico, mais pelo que pesquisei não tem union para hibernate, qual seria a solução?

Já fiz usando tudo na mesma tabela mais a questão é a normalização do banco de dados, gostaria de manter essas 3 tabelas.

Vlw.

referencia Generalização de Dados:
http://imasters.uol.com.br/artigo/6167

4 Respostas

H

Boa tarde a todos,

muito boa essa questão levantada, pois também andei lendo algumas coisas para esta solução e realmente não encontrei a resposta. Alguém poderia esclarecer como usar a Generalização com o Hibernate?

Abraço a todos

abelgomes

rapaz é o seguinte, nao sei vc ja resolveu seu problema, estava eu procurando outra coisa sobre HIbernate e achei seu topico, e achei bastante interessante, acho que seu problema se resolve assim:

Vc tem uma classe abstrata e duas subclasses, e duas tabelas no banco!!?Me corrija se estiver errado…

entao será assim: SuperClasse objeto = objeto_tipo_subclasse.

sacou? :wink:
se eu entendi errado, por favor me corrija.

J

Vlw Abel e Hoelz, vlw a colaboração mais acho que não conseguir me expressar bem, vamos lá.

na verdade e tenho 3 classes sendo um superclasse e duas subclasses, acho melhor mostrar com exemplos:

SuperClasse Fornecedor

abstract class Fornecedor {
    
   private int codFornecedor;
   private String endereco;

   //Getters e Setters


}

SubClasse FornecedorFisico

public class FornecedorFisico extends Fornecedor{

    private int codFornecedorFisico
    private String nome;
    private String cpf;
    
    //Getters e Setters

}

SubClasse FornecedorJuridico

public class FornecedorJuridico extends Fornecedor{

    private int codFornecedorJuridico
    private String razaoSocial;
    private String cnpj;
    
    //Getters e Setters

}

e tenho as 3 tabelas no banco com suas chaves primárias e composto como mostrado na abertura de tópico, por concidencia neste caso minhas tabelas são iguais as classes: Fornecedor, FornecedorFisico, FornecedorJuridico.

estas classes acima estão sem as anotações do hibernate, pois estão em outra máquina e estou sem acesso a ela agora.

Agora que acho que me expressei melhor, vou resumir, como guardo as informações em 3 tabelas diferentes como faço para conseguir retornar (select) do banco de dados Mysql para popular por exemplo um JTable, como citei acima com comando SQL já usei UNION, com hibernate procurei mais não achei.

aguém usa generalização no banco de dados?

ou melhor, neste caso, como vocês normalmente relacionam as tabelas para facilitar o trabalho com hibernate?

Grato e Vlw.

J

bem, acho que ainda não conseguir me expressar legal, vou tentar mais uma vez, estou preso nisso desde ontem.

ok, como já falei tenho 3 tabelas no banco de dados e 3 classes em java, minhas tabelas na verdade são um clone das minhas entidades(classes), como fornecedor fisica e jurídico entends de fornecedor, quando abrir a tela de fornecedor preciso trazer no grid tanto os fisicos como juridicos, mesma coisa na combo, preciso trazer os dois, alguém teria uma solução para este problema? utilizo hibernate e gostaria de fugir de guambiarra?

de qualquer forma vlw pela força!

Criado 14 de julho de 2008
Ultima resposta 15 de jul. de 2008
Respostas 4
Participantes 3