Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Erro referente à classe Consulta

Segui as aulas até o final do capítulo 1 e fiz as implementações, contúdo, estou tendo um erro que não consigo entender o que esta acontecendo exatamente. Por favor, poderiam me ajudar? Segue abaixo o meu repositorio público, branch e stacktrace do erro. Se precisarem de mais detalhes, por favor, me avisem.

REPOSITÓRIO: https://github.com/lucianogomes02/med-api

BRANCH: agendamento-de-consultas-testes-e-doc

STACKTRACE:

Caused by: org.hibernate.AnnotationException: Entity 'med.voli.medapi.consulta.domain.Consulta' has no identifier (every '@Entity' class must declare or inherit at least one '@Id' or '@EmbeddedId' property)
    at org.hibernate.boot.model.internal.InheritanceState.determineDefaultAccessType(InheritanceState.java:279) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.internal.InheritanceState.getElementsToProcess(InheritanceState.java:215) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.internal.InheritanceState.postProcess(InheritanceState.java:160) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:293) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:228) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:417) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:255) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:278) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:321) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1383) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1454) ~[hibernate-core-6.2.13.Final.jar:6.2.13.Final]
    at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.0.13.jar:6.0.13]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.0.13.jar:6.0.13]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.0.13.jar:6.0.13]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.0.13.jar:6.0.13]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1817) ~[spring-beans-6.0.13.jar:6.0.13]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[spring-beans-6.0.13.jar:6.0.13]
    ... 90 common frames omitted
2 respostas
solução!

Eu não encontrei o código da classe Consulta no seu repositório.

Mas pelo log da exception aparentemente você não está colocando um identificador no mapeamento da classe/entidade Consulta, o que é uma coisa obrigatória para o Hibernate.

Verifique se a classe consulta está com o atributo id e se o mesmo está anotado com a anotação @Id.

EDIT

Sua classe Consulta está importando a anotação Id de import org.springframework.data.annotation.Id; E provavelmente está dando conflito com a anotação do Jakarta.persistence, o que faz com que o Hibernate não identifique seu atributo como um identificador.

Foi isso mesmo! Resolveu utilizando o Id do Jakarta. Mas nesse caso, existe um certo entre usar do Jakarta e do Spring?