[Hibernate] Khắc phục lỗi org.hibernate.AnnotationException: Unknown Id.generator

Vấn đề
Chạy chương trình Hibernate có sử dụng annotation sequence generator với PostgreSQL database.

Java:
@Id
@Column(name="user_id", nullable=false)
@GeneratedValue(strategy = GenerationType.SEQUENCE ,generator="account_user_id_seq")
private Integer userId;
Sẽ xảy ra exception Unknown Id.generator.
Code:
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)
Sequence “account_user_id_seq” đã được tạo trong PostgreSQL database, tại sao xuất hiện exception như trên?


Giải pháp
Khi khai báo annotation của hibernate để sử dụng “Sequences” cho việc generate Id, hãy chỉ định cả @SequenceGenerator, như sau

Java:
@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;

Cám ơn các bạn đã theo dõi. Hẹn gặp lại các bạn trong các bài viết sau :D

Bài viết tham khảo tại: https://mkyong.com/hibernate/org-hibernate-annotationexception-unknown-id-generator/
 

Bình luận