問題

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

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

次のUnknown

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データベースで作成されましたが、上記の例外の原因は何ですか?

解決策



Sequences

“をIdジェネレータとして使用するための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;