Error Document/Spring

[Spring] JPA No identifier specified for entity 에러 해결 방법

JeongKyun 2022. 8. 30.
반응형

에러 전문

nested exception is org.hibernate.AnnotationException: No identifier specified for entity: com.snowdeer.database.board.Member

 

JPA의 프로바이더인 하이버네이트에서 에러가 발생한 상황이다.

 

굉장히 간단히 에러며, 발생 이유는 보통 두 가지 케이스로 나눠서 볼 수 있다.

 

케이스 1 - @Id가 빠져있는 경우

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Getter
@Entity
@Table(name="tb_user")
public class UserEntity{

	@Column(name = "user_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private int userId;
    
    ...
}

위의 상황은 Entity 내부에 key로 사용하는 @Id의 어노테이션이 빠져있을 경우이다. 그럴 경우 아래와 같이 @Id를 붙여준다면 쉽게 해결된다.

 

케이스 1 - 해결

    @Id
    @Column(name = "user_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int userId;

 


 

케이스 2 - @Id의 import가 잘못 되어있는 경우

import org.springframework.data.annotation.Id

위와 같이 되어있다면 아래와 같이 수정하여 해결할 수 있다.

 

케이스 2 - 해결

import javax.persistence.Id

 

댓글

💲 많이 본 글