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;
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.
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.
@GenericGenerator is a hibernate annotation used to denote a custom generator, which can be a class or shortcut to a generator supplied by Hibernate.
It should be uuid2
:
... @GenericGenerator(name = "uuid", strategy = "uuid2") ...
See 5.1.2.2.1. Various additional generators.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With