2010-06-20 8 views
7

मेरी तालिका में से एक कॉलम प्रकार इनसेट के रूप में है। और जब मैं इन्सेट कॉलम के प्रकार के रूप में स्ट्रिंग का उपयोग करके सम्मिलित ऑपरेशन करने का प्रयास करता हूं, तो यह कह रहा है कि "कॉलम" आईपी "टाइप इनसेट है लेकिन अभिव्यक्ति प्रकार के चरित्र में भिन्न है:", जो पूरी तरह से मान्य अपवाद है। अब, मेरा सवाल यह है कि मैं स्ट्रिंग के बजाय इनसेट प्रकार का उपयोग करने के लिए jdbcTemplate को कैसे निर्देशित करूं।जेडीबीसी टेम्पलेट और इनसेट डेटा प्रकार

MapSqlParameterSource params = new MapSqlParameterSource(); 
params.addValue("ip",new SqlParameterValue(Types.??, conn.getIPAddress())); 

मंत्रिमंडल प्रकार प्रकार वर्ग में सूचीबद्ध नहीं है, मैं क्या पारित करेगा: मैं की तरह कुछ कोशिश कर रहा हूँ?

पीएस मैं PostgresSql संस्करण 8.4.4 का उपयोग कर रहा हूँ।

उत्तर

3

आपको टाइपरस्केल को सही प्रकार का अनुमान लगाने का प्रयास करने के लिए Typer.OTHER का उपयोग करना चाहिए।

आप जेडीबीसी कनेक्शन पैरामीटर में "stringtype = निर्दिष्ट नहीं" जोड़ सकते हैं। यह चालक को सही प्रकार का अनुमान लगाने का प्रयास करने के लिए ड्राइवर को निर्देश देता है।

एक तीसरी संभावना PGobject subclass है। पुराने ड्राइवर में इस तरह के सबक्लास पीजीनेट प्रदान किया गया था, लेकिन इसके लिए स्पष्ट रूप से समर्थन एक कारण या किसी अन्य कारण से गिरा दिया गया था। ज्यामितीय प्रकार अभी भी मौजूद हैं, लेकिन मुझे लगता है कि नेटवर्क प्रकार ड्राइवर पैकेज में नहीं हैं।

insert into t(ip) values(?::inet) 

यह बजाय सर्वर साइड मंत्रिमंडल के लिए पाठ से आईपी पते बदल देता है, के बारे में बुरी तरह-स्वरूपित इसलिए किसी भी त्रुटि:

6

एक संभावना है, जैसे अपने एसक्यूएल में प्लेसहोल्डर के चारों ओर एक डाली आपरेशन जोड़ने के लिए है पते को सर्वर से डीकोड किया जाना होगा ... या सम्मिलित करने और आशा करने से पहले इसे सत्यापित करें।

संबंधित मुद्दे