Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using Hibernate UUIDGenerator via annotations

I'm using my uuid as following:

@Id @GeneratedValue(generator = "uuid") @GenericGenerator(name = "uuid", strategy = "uuid") @Column(name = "uuid", unique = true) private String uuid; 

but I'm getting a smart Hibernate warning:

Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values; consider using org.hibernate.id.UUIDGenerator instead

So I want to switch to org.hibernate.id.UUIDGenerator, now my question is how should I tell it to Hibernate's generator. I saw some guy used it as a "hibernate-uuid" - so this is what I've tried, but with negative result:

@Id @GeneratedValue(generator = "hibernate-uuid") @GenericGenerator(name = "hibernate-uuid", strategy = "hibernate-uuid") @Column(name = "uuid", unique = true) private String uuid; 
like image 877
Martin Avatar asked Jun 15 '11 11:06

Martin


People also ask

How to use UUID in Hibernate?

if you want a Human-Readable varchar(36) field in the database table, but also a Serializable UUID data type in your Java Class, you can use @Type(type = "uuid-char") at the same time you declare your field member with java.

How to generate UUID in java Hibernate?

Random number based UUID in Hibernate 4 and 5 You need to annotate your primary key attribute with a @GeneratedValue annotation. In that annotation, you need to reference a custom generator and define that generator using Hibernate's @GenericGenerator annotation.

What is GenericGenerator Hibernate?

@GenericGenerator is a hibernate annotation used to denote a custom generator, which can be a class or shortcut to a generator supplied by Hibernate.


2 Answers

It should be uuid2:

... @GenericGenerator(name = "uuid", strategy = "uuid2") ... 

See 5.1.2.2.1. Various additional generators.

like image 50
axtavt Avatar answered Sep 30 '22 08:09

axtavt


HibernateDoc says you can use following:

@Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid", strategy = "uuid") @Column(name = "uuid", unique = true) private String uuid; 

I hope you are using Hibernate 3.5.

like image 41
CSchulz Avatar answered Sep 30 '22 07:09

CSchulz