का उपयोग कर पोस्टग्रेएसक्यूएल में यूयूआईडी को कायम रखना मैं पोस्टग्रेएसक्यूएल में एक इकाई को जारी रखने की कोशिश कर रहा हूं जो यूयूआईडी को प्राथमिक कुंजी के रूप में उपयोग करता है। मैंने कोशिश की एक सादे UUID के रूप में यह बने है:जेपीए
@Id
@Column(name = "customer_id")
private UUID id;
ऊपर के साथ
, मैं इस त्रुटि मिलती है:
ERROR: column "customer_id" is of type uuid but expression is of type bytea
Hint: You will need to rewrite or cast the expression.
Position: 137
मैं भी कोई लाभ नहीं हुआ बाइट [] के रूप में UUID बने की कोशिश की:
@Transient
private UUID id;
@Id
@Column(name = "customer_id")
@Access(AccessType.PROPERTY)
@Lob
protected byte[] getRowId() {
return id.toString().getBytes();
}
protected void setRowId(byte[] rowId) {
id = UUID.fromString(new String(rowId));
}
अगर मैं @Lob को हटा देता हूं, तो मुझे जो त्रुटि मिलती है वह ऊपर पोस्ट की गई है। लेकिन @Lob के साथ लागू, त्रुटि के लिए थोड़ा परिवर्तन:
ERROR: column "customer_id" is of type uuid but expression is of type bigint
Hint: You will need to rewrite or cast the expression.
Position: 137
मैं बहुत बुरा इस के रूप में सरल कुछ करने के लिए असमर्थ रहा महसूस कर रहा हूँ!
मैं हाइबरनेट 4.1.3 का उपयोग कर रहा हूं। PostgreSQL 9.1 के साथ अंतिम।
मैंने एक ही मुद्दे के साथ SO या अधिक पर कई प्रश्नों को देखा है लेकिन वे सभी पुराने हैं और कोई भी सीधे आगे जवाब नहीं देता है।
मैं बदसूरत हैक का उपयोग किये बिना इसे मानक तरीके से प्राप्त करना चाहता हूं। लेकिन अगर यह केवल (बदसूरत) हैक हासिल किया जा सकता है, तो हो सकता है कि मैं यही करूँगा। हालांकि, मैं डेटाबेस में यूयूआईडी को वर्चर के रूप में स्टोर नहीं करना चाहता क्योंकि यह प्रदर्शन के लिए अच्छा नहीं है। साथ ही, यदि संभव हो तो मैं अपने कोड में एक हाइबरनेट निर्भरता पेश नहीं करना चाहता हूं।
किसी भी मदद की सराहना की जाएगी।
UPDATE 1 (2012-07-03 12:15 बजे)
ठीक है, ठीक है, ठीक है ... यह बहुत मज़ेदार है कि मैं ठीक उसी कोड (सादा UUID, कोई रूपांतरण का परीक्षण किया है - एसक्यूएल सर्वर 2008 R2 JTDS ड्राइवर (v1.2.5) का उपयोग कर और, लगता है क्या, यह एक आकर्षण के रूप में काम के साथ कोड ऊपर तैनात) के पहले संस्करण (निश्चित रूप से मैं persistence.xml में कनेक्शन से संबंधित जानकारी बदलना पड़ा)।
अब, यह एक PostgreSQL विशेष मुद्दा या क्या है?
[पोस्टग्रेस्क्ल यूयूआईडी द्वारा समर्थित हाइबरनेट द्वारा समर्थित डुप्लिकेट?] (Http://stackoverflow.com/questions/4495233/postgresql-uuid-supported-by -बिनेटनेट) –
जैसा कि मैंने अपनी पोस्ट में उल्लेख किया है, वही समस्या के साथ SO पर कई प्रश्न हैं लेकिन वे सभी पुराने हैं और कोई भी अच्छा, कामकाजी समाधान नहीं प्रतीत होता है। आपके द्वारा उल्लिखित पोस्ट में कोई अपवाद नहीं है (जो, बीटीडब्ल्यू, मैंने अपना प्रश्न पोस्ट करने से पहले देखा था)। – ehsanullahjan