에러 전문
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
반응형
댓글