2024-04-01 23:06:34.946 INFO 29552 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2024-04-01 23:06:34.972 INFO 29552 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MariaDB103Dialect
2024-04-01 23:06:35.104 ERROR 29552 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: No identifier specified for entity: com.springboot.securityjwt.entity.User
2024-04-01 23:06:35.105 WARN 29552 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.springboot.securityjwt.entity.User
2024-04-01 23:06:35.105 INFO 29552 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2024-04-01 23:06:35.110 INFO 29552 --- [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
2024-04-01 23:06:35.112 INFO 29552 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]
2024-04-01 23:06:35.120 INFO 29552 --- [ main] ConditionEvaluationReportLoggingListener :
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2024-04-01 23:06:35.138 ERROR 29552 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.springboot.securityjwt.entity.User
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.12.jar:5.3.12]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.12.jar:5.3.12]
at ...
Process finished with exit code 1
엔티티를 생성한 후 위와 같은 에러가 떴습니다.
가장 눈에 띄는 문장은 No identifier specified for entity: com.springboot.securityjwt.entity.User 입니다.
No identifier specified for entity란 ➜ 엔티티의 식별자가 없다는 것 !
식별자가 없다는 오류가 발생하였을때 해당 엔티티의 어노테이션을 확인합니다!
대부분의 원인은 import를 잘못한 것입니다.
무슨 말이냐면, 식별자 즉 @Id의 어노테이션 확인하면 두 가지의 import를 할 수 있습니다.
- import org.springframework.data.annotation.Id
- import javax.persistence.Id
여기서 2번째 import javax.persistence.Id로 임포트를 해야합니다.

저 또한, import org.springframework.data.annotation.Id로 임포트를 하고 있었고, import javax.persistence.Id로 바꾸니 오류가 사라지고, 잘 실행됩니다!

- import org.springframework.data.annotation.Id
- import javax.persistence.Id의 차이점을 간단하게 요약하자면,
- 두 어노테이션 모두 엔티티의 식별자(기본 키)를 지정하는 데 사용되지만, javax.persistence.Id는 JPA와 함께 사용되며, org.springframework.data.annotation.Id는 Spring Data 프로젝트와 함께 사용됩니다.