यह व्यवहार काफी कष्टप्रद है क्योंकि SQL कमांड में शाब्दिक स्ट्रिंग्स के रूप में उपयोग किए जाने पर JSON स्ट्रिंग्स को बिना किसी समस्या के स्वीकार किया जाता है।
पोस्टग्रेज़ ड्राइवर गिथब रिपॉजिटरी में इसके लिए पहले से ही एक समस्या है (भले ही समस्या सर्वरसाइड प्रोसेसिंग लगती हो)।
sql स्ट्रिंग में कास्ट (@a_horse_with_no_name का उत्तर देखें) का उपयोग करने के अलावा, इश्यू लेखक दो अतिरिक्त समाधान प्रदान करता है:
- पैरामीटर का उपयोग करें
stringtype=unspecified
जेडीबीसी कनेक्शन यूआरएल/विकल्प में।
यह पोस्टग्रेएसक्यूएल को बताता है कि सभी टेक्स्ट या वर्कर पैरामीटर वास्तव में अज्ञात प्रकार के हैं, जिससे यह उनके प्रकारों का अधिक स्वतंत्र रूप से अनुमान लगा सकता है।
- पैरामीटर को
org.postgresql.util.PGobject
में लपेटें :
PGobject jsonObject = new PGobject();
jsonObject.setType("json");
jsonObject.setValue(yourJsonString);
pstmt.setObject(11, jsonObject);