2010-04-26 12 views
5

में एसक्यूएल ऐरे प्रकारों के साथ परिणामसेट अपडेट करना मैं पोस्टग्रेएसक्यूएल 8.4 और जेडीबीसी 4 ड्राइवर के साथ एक एसक्यूएल ऐरे प्रकार का उपयोग करने की कोशिश कर रहा हूं।जेडीबीसी/पोस्टग्रेएसक्यूएल

मेरे स्तंभ के रूप में परिभाषित किया गया है इस प्रकार है:

nicknames   CHARACTER VARYING(255)[] NOT NULL 

और मैं इसे thusly अद्यतन करने के लिए कोशिश कर रहा हूँ:

row.updateArray("nicknames", 
    connection.createArrayOf("CHARACTER VARYING", p.getNicknames().toArray())); 

(p.getNicknames() रिटर्न एक List<String>)

लेकिन मैं दिखाई दे रही है :

org.postgresql.util.PSQLException: के लिए सर्वर सरणी प्रकार खोजने में असमर्थ नाम प्रदान किया गया चरित्र वर्णांकन। org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf (AbstractJdbc4Connection.java:67) org.postgresql.jdbc4.Jdbc4Connection.createArrayOf (Jdbc4Connection.java:21) पर पर

दुर्भाग्य से, सरणी प्रकार डॉन ' टी अच्छी तरह से प्रलेखित हो रहे हैं - मैं बिल्कुल का उल्लेख नहीं पाया है कि कैसे कहीं भी PostgreSQL के लिए यह करने के लिए :(

कोई भी विचार

उत्तर

8

बदलें "चरित्र VARYING" के लिए "varchar" कमांड लाइन psql?। ग्राहक टाइप नाम "चरित्र वैरिंग" स्वीकार करता है, लेकिन जेडीबीसी चालक करता है ईएस नहीं

org.postgresql.jdbc2.TypeInfoCache के लिए स्रोत स्वीकार्य प्रकार के नामों की एक सूची है।

createArrayOf() के लिए अस्पष्ट शब्दों अनुबंध के हिस्से पर विचार करें:

TypeName एक डेटाबेस विशिष्ट नाम जो एक अंतर्निहित प्रकार, उपयोगकर्ता-निर्धारित प्रकार का नाम या एक मानक एसक्यूएल हो सकता है इस डेटाबेस द्वारा समर्थित प्रकार।

मैं हमेशा मान लिया ड्राइवर कार्यान्वयन करने वालों वाक्यांशों "डेटाबेस विशिष्ट नाम" और "इस डेटाबेस द्वारा समर्थित" मतलब "स्वीकार जो कुछ भी आप चाहते हैं" की व्याख्या। लेकिन हो सकता है कि आप इसे पोस्टग्रेस जेडीबीसी ड्राइवर के खिलाफ एक बग के रूप में फाइल कर सकें।

शुभकामनाएं।

+0

आच, आप सही हैं। मुझे लगता है कि "डेटाबेस-विशिष्ट" का अर्थ है "जो भी डीबी उपयोग करता है" जो आप इंगित करते हैं वह गलत है। यह भी ध्यान देने योग्य है कि यह * लगता है कि * केस संवेदनशील है, बस बाकी सब कुछ के विपरीत। धन्यवाद! –