1
resposta

[Dúvida] Estou recebendo a exceção "InstantiationException" ao usar o getList

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Após fazer a alteração para o Hibernate, essa exceção "InstatiationExceptio" me aparece quando tento utilizar o método "getList". Como consigo resolver?

Github:https://github.com/MarcosSerpa748/AluraGames2.git

1 resposta

Ola!

Pelo erro mostrado no seu print:

org.hibernate.InstantiationException: No default constructor for entity
: br.com.Alura.AluGames.Modelos.JogoEntity

O problema é que o Hibernate precisa de um construtor sem argumentos (default constructor) para conseguir instanciar suas entidades.

No Kotlin, quando você define uma data class ou adiciona apenas construtores com parâmetros obrigatórios, o compilador não gera um construtor vazio automaticamente (como acontece em Java).

Como resolver

Na sua entidade JogoEntity, adicione um construtor sem parâmetros. Algo assim:

import jakarta.persistence.*

@Entity
@Table(name = "jogos")
class JogoEntity(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,
    val titulo: String = "",
    val capa: String = "",
    val preco: Double = 0.0,
    val descricao: String = ""
) {
    // Construtor vazio exigido pelo Hibernate
    constructor() : this(null, "", "", 0.0, "")
}
  • O Hibernate usa reflexão para criar instâncias das entidades.
  • Ele não sabe lidar apenas com construtores com parâmetros obrigatórios.
  • Por isso, você precisa garantir que exista um construtor sem argumentos (constructor()), mesmo que não vá usá-lo diretamente no seu código.

Depois de adicionar esse construtor vazio na sua JogoEntity, o getList() deve funcionar sem lançar InstantiationException.