org.hibernate.AnnotationException: Unknown Id.generator

Problem

Runing the following Hibernate’s annotation sequence generator with PostgreSQL database.


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

Hits the following Unknown Id.generator exception.


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)

The sequence “account_user_id_seq” is created in PostgreSQL database, what caused the above exception?

Solution

When declaring the Hibernate’s annotation strategy to use “Sequences” as Id generator, try specify the @SequenceGenerator as well, as following


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

10 comments on “org.hibernate.AnnotationException: Unknown Id.generator

  1. Hi Mkyong,
    Please give some solution to my issue.

    Thanks
    Vivek

    Reply
  2. How I can autogenerate the String in hibernate?

    Example:

    @Id

    @GenerateValue

    private String cust_code;

    If i give above like that, it should not work and please let me know how to resolve this issue?

    Reply
  3. I tryied the similar way it didn’t work, But the below code did.

    @Id

    @Column(name = “ID”, unique = true, nullable = false)

    @GeneratedValue(generator=”my_seq”)

    @SequenceGenerator(name=”my_seq”, sequenceName=”E_ID”)

    private Long docmId;

    Reply
  4. Thank you so much for this!
    It works perfectly. Hibernate can be very unhelpful sometimes!

    Reply
  5. Isn’t that ridiculous? I think writing the actual sequence name in the generator field makes more sense.

    Reply
    1. Include the sequence name in the generator field make some of my projects failed to run, don’t really know the reason behind.

      However, the @SequenceGenerator worked in all cases.

      Reply
  6. Quite inspiring,

    good tip:When we declared our annotation strategy to use “Sequences” as our id generator, we need to specify the @SequenceGenerator as well.
    I try to remember it

    Thanks for writing about it

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *