2011-06-15 23 views
55

estoy usando mi uuid de la siguiente manera:usando Hibernate UUIDGenerator a través de anotaciones

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

pero yo estoy haciendo una advertencia de hibernación inteligente:

Usando org.hibernate.id.UUIDHexGenerator que no genera IETF RFC 4122 valores de UUID compatibles; considerar el uso de org.hibernate.id.UUIDGenerator lugar

Por eso quiero cambiar a org.hibernate.id.UUIDGenerator, ahora mi pregunta es ¿cómo debo decirle que el generador de Hibernate. Vi a un tipo usado como una "hibernación-uuid" - así que esto es lo que he intentado, pero con resultado negativo:

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

Respuesta

83

Debe ser uuid2:

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

Ver 5.1.2.2.1. Various additional generators.

+4

[Es lo mismo para 4.1] (http://docs.jboss.org/hibernate/orm/4.1/manual/en- US/html_single/# mapping-declaration-id). Además, tenga en cuenta que usa java.util estadounidenseID.randomUUID(). – CorayThan

+9

Un simple '@Id @GeneratedValue private java.utilidenseID id;' funciona en Hibernate 5+. Ver [documentación] (http://docs.jboss.org/hibernate/orm/5.0/userguide/html_single/Hibernate_User_Guide.html#identifiers). –

14

HibernateDoc dice que se puede utilizar lo siguiente:

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

I Espero que estés usando Hibernate 3.5.

9

Try ...

@Id 
@GeneratedValue(generator = "uuid2") 
@GenericGenerator(name = "uuid2", strategy = "uuid2") 
@Column(name = "uuid", columnDefinition = "BINARY(16)") 
public UUID getId() 
{ 
    return id; 
} 

public void setId(UUID i) 
{ 
    id = i; 
} 

Nota del "uuid2" en lugar de "uuid".

3

Desconocido Id.generator: hibernate-uuid

@Id 
@GeneratedValue(generator = "uuid") 
@GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator") 
@Column(name = "id", unique = true) 
public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 
Cuestiones relacionadas