작성
·
716
·
수정됨
0
현재 이런 오류가 발생해서 찾아보니까 entity에 Id가 없어서 그렇다고 나오는데
저는 entity가 이 3개밖에 없는데 CreateChatRoom이라는 객체가 생성되어서 오류가 발생하는것같은데 어떻게 해결해야할까요?
Caused by: org.hibernate.AnnotationException: Entity 'com.matching.chat.entity.CreateChatRoom' 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.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.internal.InheritanceState.getElementsToProcess(InheritanceState.java:215) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.internal.InheritanceState.postProcess(InheritanceState.java:160) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.internal.EntityBinder.handleIdentifier(EntityBinder.java:293) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.internal.EntityBinder.bindEntityClass(EntityBinder.java:228) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.internal.AnnotationBinder.bindClass(AnnotationBinder.java:417) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:255) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:278) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:321) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1383) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1454) ~[hibernate-core-6.2.17.Final.jar:6.2.17.Final]
at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:75) ~[spring-orm-6.0.15.jar:6.0.15]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.0.15.jar:6.0.15]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.0.15.jar:6.0.15]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.0.15.jar:6.0.15]
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.0.15.jar:6.0.15]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1815) ~[spring-beans-6.0.15.jar:6.0.15]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1764) ~[spring-beans-6.0.15.jar:6.0.15]
... 115 common frames omitted
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
김시형님의 Spring Boot 프로젝트에서 발생한 오류는 CreateChatRoom
이라는 엔티티 클래스가 @Id
어노테이션이 지정된 식별자 필드를 선언하지 않아서 발생하는 것으로 보입니다. @Entity
클래스가 반드시 하나 이상의 식별자를 선언해야 한다는 JPA 규격을 만족시키지 못했기 때문이죠.
해당 오류를 해결하기 위해서는, CreateChatRoom
클래스 내에 적절한 식별자 필드를 추가하고 @Id
어노테이션을 부여해야 합니다. 예를 들어, 아래와 같이 id
필드를 클래스에 추가하는 방식입니다.
@Entity
public class CreateChatRoom {
@Id
@GeneratedValue
private Long id;
// ... 클래스의 나머지 부분
}
위의 코드 예시처럼 식별자 필드인 id
필드를 추가하고 @Id
어노테이션을 사용해 JPA에게 해당 필드가 엔티티의 식별자임을 알려줍니다. 또한 @GeneratedValue
어노테이션은 식별자 값이 자동으로 생성되도록 지정합니다.
만약 CreateChatRoom
엔티티 클래스가 실제로 존재하지 않는다면, 프로젝트 내 다른 부분의 설정이나 코드에서 잘못된 참조가 있는지 확인해 보시기 바랍니다. 엔티티 스캐닝 범위가 넓어져서 예상치 못한 클래스까지 @Entity
로 인식하는 상황일 수도 있으니, @EntityScan
어노테이션을 사용하여 스캔 범위를 조정해 볼 수 있습니다.
추가 정보가 필요하시면 아래의 공식 문서도 참고하시면 도움이 될 것입니다.
- 엔티티 클래스 정의: Spring Boot Reference Documentation
- 엔티티 스캔 설정: Spring Boot Reference Documentation