org.hibernate.AnnotationException: No identifier specified for entity

今回は、個人プロジェクトをやっている時、JPAルール関連エラーが発生したのでそれにについてみていきたいと思います。

エラー内容

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘jpaMappingContext’: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: No identifier specified for entity: jp.co.aoterp.domain.skill.Skill

  • Skillクラスに識別子がないという意味みたいですね。

解決

意外と簡単でしたが、識別できるIDアノテーションを定義するだけで解決できました。

+JPA Entityルール

JPA Entity作成するには以下のルールを守らなければならないようです。

  1. 全てのEntityクラスには@Idの指定が必要です。
    1. このアノテーションが付与されているカラムはNull不可
  2. 基本キーが複合キーの場合は、@Embeddedldまたは@IdClassアノテーションを使います。
  3. テーブルにPK(Primary Key)がない場合は、Uniqueなカラムに@Idアノテーションを付与して使います。

終わり

上記で書いてあるルール以外にもいっぱいありそうですが、今回はバグ対応メモとして残しました。

バグが出てきたら都度都度メモしていきたいと思います。

コメントを残す