Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Persistir Classes herdadas com JPA

Olá, assisti aos cursos de JPA e senti falta de algo que estou implementando num projeto que estou desenvolvendo.

Digamos que tenho as classes PessoaFisica e PessoaJuridica, ambas herdam da classe Pessoa:

Classe Pessoa:

package br.com.projeto.models;

import java.util.List;

public class Pessoa {

    private List<Endereco> endereco;
    private List<Contato> contatos;

    public List<Endereco> getEndereco() {
        return endereco;
    }
    public void setEndereco(List<Endereco> endereco) {
        this.endereco = endereco;
    }
    public List<Contato> getContatos() {
        return contatos;
    }
    public void setContatos(List<Contato> contatos) {
        this.contatos = contatos;
    }

}

Classe PessoaFisica

package br.com.projeto.models;

import java.util.Calendar;

public class PessoaFisica extends Pessoa{

    private String nome;
    private String rg;
    private String cpf;
    private Calendar dataNascimento;

    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getRg() {
        return rg;
    }
    public void setRg(String rg) {
        this.rg = rg;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    public Calendar getDataNascimento() {
        return dataNascimento;
    }
    public void setDataNascimento(Calendar dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

}

Classe PessoaJuridica

package br.com.projeto.models;

public class PessoaJuridica extends Pessoa {

    private String nomeFantasia;
    private String razaoSocial;
    private String cnpj;
    private String inscricaoEstadual;
    private Pessoa responsavel;

    public String getNomeFantasia() {
        return nomeFantasia;
    }
    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }
    public String getRazaoSocial() {
        return razaoSocial;
    }
    public void setRazaoSocial(String razaoSocial) {
        this.razaoSocial = razaoSocial;
    }
    public String getCnpj() {
        return cnpj;
    }
    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }
    public String getInscricaoEstadual() {
        return inscricaoEstadual;
    }
    public void setInscricaoEstadual(String inscricaoEstadual) {
        this.inscricaoEstadual = inscricaoEstadual;
    }
    public Pessoa getResponsavel() {
        return responsavel;
    }
    public void setResponsavel(Pessoa responsavel) {
        this.responsavel = responsavel;
    }
}

Qual é o método apropriado para persistir essas classes no banco usando o JPA?

2 respostas

Não seria o persist do EntityManager?

solução!

Acho que não me expressei bem ao fazer a pergunta, mas já encontrei algumas maneiras de resolver.

Segue abaixo alguns links que me ajudaram.

http://blog.caelum.com.br/jpa-com-hibernate-heranca-e-mapeamentos/

http://www.guj.com.br/t/ajuda-jpa-com-heranca-por-subclasse-resolvido/289053

https://thoughts-on-java.org/complete-guide-inheritance-strategies-jpa-hibernate/

Seria legal se isso fosse incluído no curso. Acho que é um assunto bem pertinente.