2009-04-17 15 views
9

मैं जावा यूयूआईडी के साथ पोस्टग्रेएसक्यूएल के मूल यूयूआईडी प्रकार का उपयोग करना चाहता हूं। मैं अपने जेपीए प्रदाता और ओआरएम के रूप में हाइबरनेट का उपयोग कर रहा हूं। अगर मैं इसे सीधे सहेजने की कोशिश करता हूं, तो इसे पोस्टग्रेज़ में बाइटिया के रूप में ही सहेजा जाता है।पोस्टग्रेस + हाइबरनेट + जावा यूयूआईडी

मैं यह कैसे कर सकता हूं?

उत्तर

8

जेडीबीसी ड्राइवर (वर्तमान में 8.4dev-700) के नवीनतम विकास संस्करण का उपयोग करने का प्रयास करें, या अगले रिलीज संस्करण की प्रतीक्षा करें। (जोड़ने के लिए संपादित: 8.4-701 जारी की गई है)

release notes उल्लेख इस परिवर्तन:

मानचित्र java.util.UUID करने के लिए डेटाबेस UUID प्रकार। यह केवल अपेक्षाकृत नए सर्वर (8.3) और जेडीके (1.5) संस्करणों के लिए काम करता है।

+2

इस ड्राइवर को संस्करण 9.2-1002 और साथ वर्तमान में नाकाम रहने के किया जा रहा है हाइबरनेट कोर 3.3.1.GZ. Https://community.jboss.org/thread/229747?_sscc=t पर एक उत्कृष्ट अनुत्तरित प्रश्न है। मैं GORM का उपयोग करके इस समस्या में भी भाग लेता हूं। –

0

गैर-जेपीए उपयोग में मैं यूयूआईडी को यूआरआईडी को एक स्ट्रिंग के रूप में प्रारूपित करने के लिए तैयार करता हूं जो PostgreSQL स्वीकार करता है, फिर केवल उपयोगकर्ता प्रकार के कार्यान्वयन का नाम कॉलम प्रकार के रूप में दें।

0

आप के साथ की कोशिश कर सकते:

@Column(name="foo", columnDefinition="uuid") 

जहां columnDefinition देशी एसक्यूएल

0

शायद का एक टुकड़ा यदि आप स्वतः रूपांतरित एक स्ट्रिंग के लिए होने के लिए UUID प्रकार प्राप्त कर सकते हैं (uuid.toString() देना चाहिए कैननिकल 36-चार प्रतिनिधित्व)? डीबी आमतौर पर स्ट्रिंग्स और देशी प्रकारों के बीच चीजों को विश्वसनीय रूप से परिवर्तित करते हैं।

3

यहां Postgresql UUID supported by Hibernate? पर मेरे उत्तर का एक दोबारा पोस्ट है ... मुझे पता है कि यह सवाल पुराना है, लेकिन अगर कोई इसे भर देता है, तो इससे उन्हें मदद मिलेगी।

यह UUID के लिए निम्न टिप्पणी जोड़कर हल किया जा सकता:

import org.hibernate.annotations.Type; 
... 
@Type(type="pg-uuid") 
private java.util.UUID itemUuid; 

क्यों हाइबरनेट सिर्फ यह डिफ़ॉल्ट सेटिंग नहीं है, मैं आपको नहीं बता सकता के रूप में ...

अद्यतन: यूयूआईडी फ़ील्ड वाले ऑब्जेक्ट्स को खोलने के लिए createNativeQuery विधि का उपयोग कर समस्याएं प्रतीत होती हैं। सौभाग्य से, createQuery विधि अब तक मेरे लिए ठीक काम कर चुकी है।

0

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

@Column(name = "UUID", nullable=false, insertable = false, columnDefinition="uuid DEFAULT uuid_generate_v4()") 
private String uuid; 
संबंधित मुद्दे