• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Erros JPA – org.hibernate.InstantiationException: No default constructor for entity

May 25, 2015 by Mauda 8 Comments

Conteúdo do Post:
  1. Descrição do Erro
  2. Solução
  3. finally{

Olá Pessoal, tudo bom?

Hoje iremos falar sobre um erro de Mapeamento de Entidades JPA, mais especificamente da exception org.hibernate.InstantiationException: No default constructor for entity

Descrição do Erro

Para que o JPA possa instânciar classes ao trazer informações do Banco de Dados ele utiliza-se do conceito de Reflection.

O javax.reflection é um pacote que faz parte da API do Java o qual permite criar chamadas em tempo de execução, sem precisar conhecer métodos das classes e objetos envolvidos quando escrevemos nosso código (tempo de compilação). Esse dinamismo é necessário para resolvermos determinadas tarefas que nosso programa só descobre serem necessárias ao receber dados, em tempo de execução.

Assim o JPA utiliza-se do construtor default de qualquer classe para realizar a instância dessas. Caso você não tenha criado um construtor default, mesmo que private, o JPA irá gerar um erro com uma stack trace muito parecida com a seguinte stack:

org.hibernate.InstantiationException: No default constructor for entity: br.pucpr.bsi.prog6.ticketsEventosBSI.model.Artista
at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:277)
at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:224)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3568)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3522)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1379)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1784)
at br.pucpr.bsi.prog6.ticketsEventosBSI.dao.util.HibernateUtil.getSessionFactory(HibernateUtil.java:23)
at br.pucpr.bsi.prog6.ticketsEventosBSI.dao.util.HibernateUtil.getSession(HibernateUtil.java:29)
at br.pucpr.bsi.prog6.ticketsEventosBSI.dao.PatternDAO.insert(PatternDAO.java:84)
at br.pucpr.bsi.prog6.ticketsEventosBSI.bc.ArtistaBC.insert(ArtistaBC.java:29)
… 35 more

Solução

A solução para este erro é criar um construtor default dentro da sua classe. Esse construtor pode ser public, protected, private. O ponto aqui é criar um construtor que não interfira com as regras negociais criadas a partir da análise do diagrama de classes da camada Model, para construtores obrigatórios (Duvidas? Dê uma olhada nesse link). Como mostra o código abaixo:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package br.com.mauda.example.model;
 
import java.io.Serializable;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
 
@Entity
public class Artista implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = javax.persistence.GenerationType.IDENTITY)
private Long id;
private String nome;
public Artista(){
}
//outros atributos, métodos e construtores
}

finally{

Caso você achou mais alguma solução para essa exception, por favor deixe nos comentários abaixo!

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

 

Filed Under: Erros, Hibernate, Java, JPA Tagged With: Entidades, Erros, Exceptions, Hibernate, Java, JPA, Mapeamento

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Comments

  1. Vinicius says

    June 17, 2016 at 3:11 pm

    Muito obrigado cara, muito obrigado mesmo, ja estava a uma hora aqui com a cabeça a ponto de estourar procurando uma solução, muito obrigado mesmo.

    Reply
    • Mauda says

      June 18, 2016 at 12:46 pm

      Olá Vinicius, tudo bom?

      Obrigado pelo feedback!

      Precisando estamos aqui!

      Obrigado.

      Reply
  2. Ruan says

    November 23, 2019 at 9:17 pm

    Me ajudou tbm, obrigado mauda!

    Reply
    • Mauda says

      December 6, 2019 at 4:11 pm

      Olá Ruan, tudo bom?

      Obrigado pelo feedback!

      Precisando estamos aqui!

      Abraços!

      Reply
  3. Gabriel Soares Morare says

    October 6, 2020 at 8:54 pm

    Me ajudou muito!! Muitissimo obrigado!

    Reply
    • Mauda says

      October 8, 2020 at 2:24 pm

      Olá Gabriel, tudo bom?

      Que bom que o artigo foi útil!

      Obrigado pelo feedback!

      Precisando estamos aqui!

      Reply
  4. Bruno Soares says

    January 3, 2021 at 2:41 pm

    Me ajudou tbm, obrigado mauda!

    Reply
    • Mauda says

      February 4, 2021 at 10:16 am

      Olá Bruno, tudo bem?

      Legal! Obrigado pelo feedback!

      Precisando estamos aqui!

      Obrigado

      Reply

Leave a Reply to Bruno Soares Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in