! Sou iniciante no kotlin, estou tentando resolver o erro que sinaliza na declaração da classe PlanoEntity mas ainda não consegui, já tentei adicionar um segundo construtor mas deu outro erro, alguém tem uma sugestão?
! Sou iniciante no kotlin, estou tentando resolver o erro que sinaliza na declaração da classe PlanoEntity mas ainda não consegui, já tentei adicionar um segundo construtor mas deu outro erro, alguém tem uma sugestão?
Olá, Enrique! Tudo bem?
Analisando o erro presente no seu print, percebi que o Hibernate está esperando um construtor sem argumentos na sua classe PlanoEntity
.
No Hibernate, é uma exigência que todas as entidades tenham um construtor padrão (sem argumentos), que pode ser público ou protegido. Isso é necessário para que o Hibernate possa instanciar a classe usando reflection durante a operação de busca no banco de dados.
Para resolver esse problema, você pode adicionar um construtor secundário sem argumentos na sua classe PlanoEntity
. No Kotlin, você pode fazer isso da seguinte forma:
@Entity
@Table(name = "planos")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipoPlano", discriminatorType = DiscriminatorType.STRING)
sealed class PlanoEntity(val tipo: String,
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
val id: Int = 0) {
// Construtor secundário sem argumentos
protected constructor() : this("", 0)
}
Neste exemplo, o construtor secundário chama o construtor primário com valores padrão. Note que usei protected
para o construtor secundário, pois não é necessário que ele seja público, apenas acessível pelo Hibernate.
Além disso, o erro "Cannot resolve table 'planos'" indica que o Hibernate não está conseguindo encontrar a tabela correspondente no banco de dados.
Então, certifique-se de que a tabela 'planos' existe no banco de dados com o nome exato (respeitando maiúsculas e minúsculas) e que a configuração do Hibernate está correta para se conectar ao banco de dados que contém essa tabela.
Espero ter ajudado e bons estudos!