Gostaria de saber como implementar o seguinte caso no hibernate:
O código está extremamente reduzido…
// tabela
pessoa
funcionario
id_pessoa
//classes
class Pessoa
{
nome;
end;
}
class Funcionario Extends Pessoa
{
salario;
}
// consulta
Pessoa p = pessoa.consultar(1);
if (p instanceof Funcionario) {
Funcionario f = (Funcionario) p;
f.getSalario();
}
//cadastro
Funcionario f = new Funcionario();
Pessoa p = Pessoa.consultar(1);
f.associarAPessoa(p);
f.setSalario();
f.cadastrar()
Como mostrado ai em cima eu tenho uma classe Funcionario que extende a classe Pessoa.
Quando eu consultar Pessoa eu posso fazer casting para Funcionario se o mesmo estiver associado a Pessoa consultada.
Minha dúvida é também se esse arquitetura é a melhor…
dificil opinar assim mas, pq não um factory que ja retorne a implementação correta, e vc trabalha com a interface publica(Pessoa) com a implementação que vc quer, no caso Funcionario.
<EDIT>
putz, não vi que era em relação ao mapeamento no Hibernate.
</EDIT>
É verdade, mas a questão é que eu tenho um cadastro de pessoas, depois eu cadastro em Funcionario.
Uma Pessoa pode ser uma Funcionário, Terceiro, Estagiário, Visitante.
Referente ao mapeamento vou testar.
O problema é na hora de consultar pessoa. O hibernate vai saber que tem uma funcionário associado a ela ?