2011-06-15 9 views
55

मैं निम्नलिखित के रूप में मेरे UUID उपयोग कर रहा हूँ:एनोटेशन के माध्यम से हाइबरनेट UUIDGenerator का उपयोग

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

लेकिन मैं एक स्मार्ट हाइबरनेट चेतावनी हो रही है:

org.hibernate.id.UUIDHexGenerator का उपयोग करना जो आईईटीएफ आरएफसी 4122 अनुपालन यूयूआईडी मूल्य उत्पन्न नहीं करता है; org.hibernate.id.UUIDGenerator बजाय

तो मैं org.hibernate.id.UUIDGenerator स्विच करना चाहते, अब मेरा सवाल यह है कि मैं इसे हाइबरनेट के जनरेटर को बताना चाहिए है उपयोग करने पर विचार। मैं कुछ आदमी के रूप में एक "हाइबरनेट-UUID" यह प्रयोग किया जाता देखा - तो यह है कि मैं क्या कोशिश की है है, लेकिन नकारात्मक परिणाम के साथ:

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

उत्तर

83

यह uuid2 होना चाहिए:

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

देखें 5.1.2.2.1. Various additional generators

+4

([यह 4.1 के लिए ही है] http://docs.jboss.org/hibernate/orm/4.1/manual/en- अमेरिका/html_single/# मानचित्रण-घोषणा-इड)। साथ ही, ध्यान दें कि यह java.util.UUID.randomUUID() का उपयोग करता है। – CorayThan

+9

एक साधारण '@Id @GeneratedValue निजी java.util.UUID आईडी;' हाइबरनेट 5+ में काम करता है। [दस्तावेज़ीकरण] देखें (http://docs.jboss.org/hibernate/orm/5.0/userguide/html_single/Hibernate_User_Guide.html#identifiers)। –

14

HibernateDoc कहते हैं आप निम्नलिखित का उपयोग कर सकते हैं:

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

मैं आशा है कि आप हाइबरनेट 3.5 का उपयोग कर रहे हैं।

9

प्रयास करें ...

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

नोट "uuid2" के रूप में "UUID" करने का विरोध किया।

3

अज्ञात Id.generator: हाइबरनेट-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; 
} 
संबंधित मुद्दे