2
respostas

Problema Herança com JPA

Bom dia, estou tentando desenvolver um ERP apenas para testar meus conhecimentos, porem estou com um problema na parte de herança com JPA.

Tenho uma tabela mãe com duas tabelas filhas, a tabela mãe é a Pessoa, e as filhas são, PessoaJuridica e PessoaFisica, quando tento inserir ela no banco de dados utilizando o CrudRepository da Classe PessoaJuridica ele me fornece o seguinte erro.

Caused by: org.postgresql.util.PSQLException: ERROR: relation "pessoa_juridica" does not exist

Classe Pessoa

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Pessoa{
    @Id
    private Long codigo;
    private String nome;
    private String endereco;
    private String email;
    private String telefone;

//Getters e seters a baixo

Classe PessoaJuridica

 @Entity
public class  PessoaJuridica extends Pessoa {
    @Column(unique = true)
    private String CNPJ;
    private String incricaoMunicipal;
    private String incricaoEstadual;

Classe PessoaFisica

@Entity
public class PessoaFisica extends Pessoa {
    private String CPF;

Classe que estou instanciando no Controller para adicionar o objeto.

 public interface PessoaJuridicaRepository extends CrudRepository<PessoaJuridica, Long> {

    }

Controller

@Controller
public class IndexController {
    @Autowired
    private PessoaJuridicaRepository pessoaJuridicaRepository;
    @RequestMapping(value = "/")
    public String index(Model model) {
        model.addAttribute("PessoaJuridica", new PessoaJuridica());
        return "index.html";
    }
    @RequestMapping(value = "salvaPessoaFisica", method = RequestMethod.POST)
    public String salvaPessoaFisica(PessoaJuridica pessoaJuridica) {
        System.out.println("Passando pelo save");
        pessoaJuridicaRepository.save(pessoaJuridica);

        return "redirect:/";
    }

}

Percebi a seguinte mensagem de erro, relation “pessoa_juridica” does not exist. Sei que estou fazendo algo errado, porém não sei o que é. Se alguma alma caridosa for capaz de me ajudar serei muito grato. Observação: Se estiver faltando alguma informação, favor avisar. [2]: Estou utilizando Spring MVC e o Spring boot.

Obrigado =D.

2 respostas

No salvaPessoaFisica você está tentando salvar uma pessoaJuridica? Como está seu body do request?

Boa noite, obrigado por responder.

Arquivo index.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Insert title here</title>
</head>
<body>
    <h2>Teste</h2>

    <fieldset class="formularioFornecedor">
    <form action="#" th:action="@{salvaPessoaFisica}" th:object=${PessoaJuridica} method="post">
        <p>
            <label for="codigo">Favor informar o codigo:
                <input id="codigo" type="text" th:field='*{codigo}' />
            </label>
        </p>
        <p>
            <label for="nome"> Favor informar o nome:
                <input id="Nome" type="text" th:field='*{nome}' />
            </label>
        </p>
        <p>
            <label for="endereco">Favor informar indereço:
                <input id="endereco" type="text" th:field='*{endereco}' />
            </label>
        </p>
        <p>
            <label for="email">Favor informar e-mail:
                <input type="email"  th:field='*{email}' />
            </label>
        </p>
        <p>
            <label for="telefone">Favor informar Telefone;
                <input type="number" th:field='*{telefone}' />
            </label>
        </p>
        <button type="submit">Cadastrar</button>
    </form>
    </fieldset>
</body>
</html>