1
resposta

org.springframework.beans.BeanInstantiationException

Boa noite,

Na hora de persistir os dados , o spring me retorna um erro, é por conta que eu tento atribuir valores dentro da classe filha que herda da pai.

Classe pai:

@MappedSuperclass
public abstract class Endereco {

    @Id @GeneratedValue
    private int id;

    private String cep;

    private String lagradouro;

    private String bairro;

    @ManyToOne(fetch = FetchType.EAGER)
    private Cidade cidade;

    public Endereco() {

    }

    public Endereco(Endereco endereco) {

        if (endereco != null) {
            this.id = endereco.getId();
            this.cep = endereco.getCep();
            this.lagradouro = endereco.getLagradouro();
            this.bairro = endereco.getBairro();
            this.cidade = endereco.getCidade();
        }

    }

//gets e seters

}

Classe filha:

@Entity
public class EnderecoEmpresa extends Endereco {

    public EnderecoEmpresa() {

    }

    public EnderecoEmpresa(EnderecoEmpresa endereco) {
        this.setId(endereco.getId());
        this.setLagradouro(endereco.getLagradouro());
        this.setCidade(endereco.getCidade());
        this.setBairro(endereco.getBairro());
        this.setCep(endereco.getCep());
    }

}

Classe que estou tentando persistir no banco:

@Entity
public class Empresa {

    @Id
    private String cnpj;

    private String razaoSocial;

    private String site;

    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private EnderecoEmpresa endereco;

    @OneToMany
    private List<ContatoEmpresa> contatos = new ArrayList<>();

    private boolean ativo;

    //gets e seters

}

Erro que ele me retorna:

There was an unexpected error (type=Internal Server Error, status=500).
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.NullValueInNestedPathException: Invalid property 'endereco' of bean class [br.com.finiciativas.fseweb.model.Empresa]: Could not instantiate property type [br.com.finiciativas.fseweb.model.EnderecoEmpresa] to auto-grow nested property path; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.com.finiciativas.fseweb.model.EnderecoEmpresa]: Is it an abstract class?; nested exception is java.lang.InstantiationException: br.com.finiciativas.fseweb.model.EnderecoEmpresa

Poderiam me ajudar ?

1 resposta

Cara vc herdou a classe Endereço para uma classe EnderecoEmpresa com os mesmos atributos? não faz sentido vc usar a classe EnderecoEmpresa deste jeito Outra coisa vc criou um construtor para Endereço passando um endereço já pronto. Na realidade neste caso vc só esta copiando valores para criar outro endereço com os mesmos valores de atributos da classe endereço. Tenta criar um construtor passando todos os atributos um por um. Ou então constrói um builder para facilitar.