Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

No vídeo relacionando gamer a plano está dando a seguinte mensagem de erro

org.hibernate.HibernateException: Getter methods of lazy classes cannot be final: br.com.alura.alugames.dados.PlanoEntity#getId at org.hibernate.proxy.pojo.ProxyFactoryHelper.validateGetterSetterMethodProxyability(ProxyFactoryHelper.java:96) at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:97) at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:160) at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:53) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:88) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:116) at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:432) at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:612) at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:126) at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:96) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) at org.hibernate.metamodel.internal.MetamodelImpl.initialize(MetamodelImpl.java:181) at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:312) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1410) at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54) at br.com.alura.alugames.dados.Banco.getEntityManager(Banco.kt:25) at br.com.alura.alugames.principal.TesteGamerBancoKt.main(testeGamerBanco.kt:11) at br.com.alura.alugames.principal.TesteGamerBancoKt.main(testeGamerBanco.kt)

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta
solução!

Oi Fernando, tudo bem?

Pelo que vejo, você está enfrentando um problema com o Hibernate, que está reclamando que o método getter da sua classe não pode ser final. Isso geralmente ocorre quando você está usando a estratégia de carregamento "lazy" (preguiçoso) em suas entidades, e o Hibernate precisa criar proxies (substitutos) para essas entidades. No entanto, ele não pode fazer isso se os métodos getter forem finais, pois eles não podem ser sobrescritos.

Para resolver isso, você precisa remover a palavra-chave final dos métodos getter em sua classe PlanoEntity. Por exemplo, se o seu código se parece com isso:

class PlanoEntity {
    final fun getId(): Long {
        // ...
    }
}

Você deve mudar para:

class PlanoEntity {
    fun getId(): Long {
        // ...
    }
}

Isso deve permitir que o Hibernate crie proxies para suas entidades e resolva o problema.

Um abraço e bons estudos.