Pessoal… estou com um problema ao trabalhar com herança no Hibernate.
Tenho uma classe “Pessoa” e uma classe “Funcionario” que herda de Pessoa.
Em meus testes, consegui fazer seus mapeamentos, inserir, alterar, etc. Agora me deparei com um caso que sei que vou precisar no sistema que é o seguinte:
Supondo que eu já tenho uma pessoa cadastrada e que ainda NÃO é um funcionário. Se futuramente ela entrar na empresa e se tornar funcionário, eu precisarei pegar seus dados de Pessoa, adicionar seus dados de Funcionário e salvar.
Tentei fazer isso ± da seguinte maneira:
Pessoa p = new PessoaService().selectById(1);
Funcionario f = new Funcionario();
BeanUtils.copyProperties(f, p);
f.setMatricula("123");
f.setDescricaoCargo("Diretor");
f.setDescricaoFuncao("Analista de Sistemas");
funcionarioService.saveOrUpdate(f);
Minha intenção seria que fosse atualizada a tabela de pessoas (caso mude algum dado) e que fosse inserido um novo registro na tabela de funcionários, com o código da pessoa e os dados adicionais… mas o Hibernate tenta fazer Update na tabela pessoas e Update também na tabela funcionários (ao invés de insert).
O que poderia fazer para resolver este problema?