mas na verdade nao preciso dessa classe mapeda vamos supor q nao tenho no banco a tabela PessoaFisica tenho apenas pessoa e os valores de PessoaFisica nao herdados sao apenas para decoracao
como forço o JPA a gravar pessoa e nao tentar gravar PessoaFisica?
entao por exemplo essa PessoaFisica na verdade nao eh um entity eh uma classe Adapter que extends Pessoa entao ela nao possui nenhuma anotacao e nao fica mapeado no persistence.xml ja a Pessoa esta anotada normal
se eu passo apenas Pessoa p para o persist grava normal o problema é quando passo um PessoaFisica pf pensei que o JPA transformace PessoaFisica em Pessoa altomaticamente
Obs: Esses exemplos de Pessoa e PessoaFisica sao apenas para demosntracao de conceito aqui no sistema sao tabelas bem mais complexas mas que no fim seguem a mesma logica de herança
dev.rafael
Isso ñ é possível. Se vc quer gravar uma entidade no banco o objeto passado p/ o persist precisa ser uma entidade, senão da pau.
furacao123
mas por exemplo como faço para popular um objeto Pessoa pegando os valores de um PessoaFisica
Pessoa p = new Pessoa();
PessoaFisica pf = new PessoaFisica();
pf.setCpf("123456789");
pf.setNome("Filisbino");
p = pf;
ao fazer isso eu tenho o objeto p com todos os atributos de Pessoa mas quando faço
p.getClass().getName();
ele mostra o nome da classe PessoaFisica pois eu apontei o objeto p em pf mas quando eu passo esse p para o persist do JPA ele entende como uma classe do tipo PessoaFisica e da o erro
dev.rafael
Não importa como vc chama pf ele sempre será um objeto do tipo PessoaFisica. Vc ñ pode mudar o tipo de um objeto. Ou vc se livra dessa herança ou vc transforma PessoaFisica em entidade.
furacao123
é vou fazer um adapter e transformar e popular um Pessoa a partir do PessoaFisica e passar pro JPA