Duvida no Mapeamento de Herança

Boa noite pessoal.

Tem algumas horas que estou procurando solução para o meu problema e até o momento não obtive resultado.
é o seguinte: No banco de dados tenho uma tabela Pessoas onde uma pessoa pode ser cliente, fornecedor, funcionario entre poutros. Porem uma pessoa pode ser tanto cliente como funcionario ao mesmo tempo. ai é que complicou. rs

tava pesquisando sobre o mapeamento de Tabela por hierarquia de classes (que seria meu caso) porem pelo que me parece a pessoa deveria ser de um tipo ou de outro e não mais de um.

gostaria de saber se há uma forma de fazer o mapeamentoneste caso.

Estou usando o Hibernate e o mapeamento é feito através de Xml.

Obrigado

boa noite,

Isso é um bom exemplo que ocorre inúmeras vezes, tenho um exemplo em que um empregado pode ser um aluno da mesma instituição ao mesmo tempo.
Uma boa normalização seria criar uma entidade tendo como herança essas duas classes, por exemplo:

Funcionario Cliente

              cliente.funcionario

Poderia ser uma saída, assim ele seria um cliente com regalias de funcionário, como por exemplo comprar com um desconto maior.

Certo.

Mas eu cho que faltou explicação da minha parte

na tabela pessoas foi criado um atributo para cada tipo(fornecedor, funcionario, etc) sendo S para sim e N para não.

ai tenho uma superclasse pessoa e uma subclase para cada tipo de pessoa.
até ai blz, o problema é quando vai mapear com Hibernate pos pelo que vi ele pede um discriminator. Como eu vou definir um se cada tipo tem um campo propio?

[quote=exilado]Certo.

Mas eu cho que faltou explicação da minha parte

na tabela pessoas foi criado um atributo para cada tipo(fornecedor, funcionario, etc) sendo S para sim e N para não.

ai tenho uma superclasse pessoa e uma subclase para cada tipo de pessoa.
até ai blz, o problema é quando vai mapear com Hibernate pos pelo que vi ele pede um discriminator. Como eu vou definir um se cada tipo tem um campo propio?[/quote]

Na minha opinião, é melhor você abandonar a herança é trabalhar com composição. Ao invés de você ter uma subclasse Fornecedor herdando de funcionario é melhor que sua classe Fornecedor tenha uma referência para Pessoa com um relacionamento one-to-one. Isso porque para mapear herança no Hibernate o seu modelo de dados tem que suportá-lo. Os dados de Fornecedor, Funcionario, como foram modelados ? Em tabelas separadas ou na mesma tabela ?

Essa é a modelagem da tabela pessoas.
Onde Tipo é para F - Física Ou J - Jurídica
e os campos Cliente, Funcionário, Fabricante e Fornecedor são Preenchidos com SIM ou NAO

Entendi, mas a minha pergunta é outra, por exemplo, os dados exclusivos de Fornecedor por exemplo, são colocados em uma tabela Fornecedor ou serão colocadas na tabela Pessoa e ficarão nulas para Pessoas que não são fornecedor ? Entendeu meu questionamento ?

Certo. Essa é a unica tabela.
Todos os dados estarão nela

Será que seria melhor criar um mapeamento para cada subclasse apenas, e todos direcionando para a mesma tabela?

Será que Ninguém Nunca passou por uma situação dessa.
Help Me Please!

@Inheritance(Strategy=…)
Pesquise sobre isso…