org.hibernate.AnnotationException:不明なId.generator

org.hibernate.AnnotationException: Unknown Id.generator

問題

PostgreSQLデータベースで次のHibernateアノテーションシーケンスジェネレーターを実行します。

        @Id
    @Column(name="user_id", nullable=false)
    @GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="account_user_id_seq")
    private Integer userId;

次の不明なId.generator例外をヒットします。

Caused by: org.hibernate.AnnotationException: Unknown Id.generator: account_user_id_seq
    at org.hibernate.cfg.BinderHelper.makeIdGenerator(BinderHelper.java:413)
    at org.hibernate.cfg.AnnotationBinder.bindId(AnnotationBinder.java:1795)
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1229)
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:733)

シーケンス「account_user_id_seq」がPostgreSQLデータベースに作成されますが、上記の例外の原因は何ですか?

溶液

IDジェネレーターとして「Sequences」を使用するようにHibernateのアノテーション戦略を宣言する場合は、次のように@SequenceGeneratorも指定してみてください。

        @Id
    @Column(name="user_id", nullable=false)
    @SequenceGenerator(name="my_seq", sequenceName="account_user_id_seq")
    @GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="my_seq")
    private Integer userId;