मैं हाइबरनेट/जेपीए का उपयोग करके कुछ बुनियादी इकाइयों को लागू करने की कोशिश कर रहा हूं। प्रारंभ में कोड MySQL पर तैनात किया गया था और ठीक काम कर रहा था। अब, मैं PostgreSQL का उपयोग करने के लिए इसे बंद कर रहा हूँ। MySQL में, मेरा इकाई वर्ग निम्न सिंटैक्स का ऑटो-incrementing लंबे मूल्य के रूप में अपनी प्राथमिक कुंजी परिभाषित करता है:हाइबरनेट/जेपीए और पोस्टग्रेएसक्यूएल - प्राथमिक कुंजी?
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
हालांकि, मैंने पाया कि मैं PostgreSQL के साथ त्रुटियों मिलता है जब मैं कोशिश करते हैं और एक पर कई रिकॉर्ड सम्मिलित पहर। PostgreSQL में एक ही ऑटो-वृद्धिशील व्यवहार प्राप्त करने के लिए मुझे अपनी प्राथमिक कुंजी को एनोटेट करने की आवश्यकता क्या है क्योंकि मेरे पास MySQL के साथ है? आप जो भी मदद दे सकें मैं उसका आभारी होऊंगा!
GenerationType.AUTO किसी भी डेटाबेस के साथ कोई समस्या नहीं पैदा करना चाहिए। क्या आप अपवाद और/या अपना सम्मिलन कोड पोस्ट कर सकते हैं? यह ध्यान देने योग्य है कि MySQL पर, GenerationType.AUTO वृद्धि प्रकार में परिवर्तित होता है जबकि PostgreSQL पर, यह डिफ़ॉल्ट रूप से अनुक्रम का उपयोग करता है। – ig0774
विवरण के लिए यहां http://docs.jboss.org/hibernate/core/3.5/reference/en/html/mapping.html#mapping-declaration-id दस्तावेज़ देखें। मैं इसे एक बार फिर कोशिश करूंगा और फिर पोस्ट करूंगा अपवाद मुझे मिल रहा है। जिस तरह से मेरे पास मेरी इकाई वर्ग सेटअप है, वह आईडी परिभाषित और @MappedSuperclass एनोटेशन के साथ एक सार आधार वर्ग होना है, और फिर वहां से मेरी बाकी इकाइयों को प्राप्त करें। क्या आपको लगता है कि PostgreSQL में कोई समस्या पैदा होगी? – Shadowman
क्या आप जेपीए 'पर्सिस्ट()' और 'मर्ज()' या सीधा एसक्यूएल के साथ सम्मिलित हैं? 'जेनरेशन टाइप। ऑटो' का अर्थ है "दृढ़ता प्रदाता को उचित रणनीति चुननी चाहिए" (जेपीए 2.0 अंतिम रिलीज, धारा 11.1.17)। यह जरूरी नहीं है कि अनुक्रम संबंध लागू करें। केवल 'GenerationType.SEQUENCE' जेपीए प्रदाता को अनुक्रम का उपयोग करने के लिए मजबूर करता है। सवाल यह सुनिश्चित करने के लिए वर्तमान में बहुत अस्पष्ट है, लेकिन शायद हाइबरनेट ने पोस्टग्रेज़ के तहत एक तालिका के साथ 'आईडी' उत्पन्न करने का निर्णय लिया है और शायद आप एसक्यूएल को कॉलम आईडी आईडी के लिए एक गैर-डिफ़ॉल्ट डिफ़ॉल्ट अनुक्रम मान की उम्मीद कर रहे हैं। कृपया पोस्टग्रेस संबंध दिखाएं (psql's '\ d')। –