चूंकि pgJDBC 42.2.5 PostgreSQL 11 रिलीज़ (अक्टूबर, 2018) से पहले (अगस्त, 2018) जारी किया गया था, मुझे लगता है कि यह वर्तमान में PostgreSQL के लिए JDBC ड्राइवर के भीतर एक समस्या है। मैंने एक मुद्दा बनाया है GitHub रिपॉजिटरी के भीतर।
समाधान के लिए, आप STORED PROCEDURE
. को फिर से लिख सकते हैं एक FUNCTION
. के रूप में और @NamedStoredProcedureQuery
. का उपयोग करें या सीधे JDBC के साथ इंटरैक्ट करें CallableStatement
उदा.:
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/", "postgres", "postgres");
CallableStatement callableStatement = conn.prepareCall("{call f_raise_wage_employee_older_than(?,?)}");
callableStatement.setInt(1, 20);
callableStatement.setInt(2, 500);
callableStatement.executeUpdate();
या EntityManager
. के साथ नेटिव क्वेरी निष्पादित करें :
this.em.createNativeQuery("CALL p_raise_wage_employee_older_than(1, 20)");
जैसे ही मुझे pgJDBC अनुरक्षक से उत्तर मिलेगा, मैं इस उत्तर को अपडेट कर दूंगा।
अद्यतन करें:
पोस्टग्रेज मेलिंग सूची में इस विषय पर पहले ही चर्चा की जा चुकी है (https://www.postgresql.org/message-id/4285.1537201440%40sss.pgh.pa.us
) और वर्तमान में कोई समाधान नहीं है। डेटाबेस में मूल SQL क्वेरी पास करने या STORED PROCEDURE
को फिर से लिखने का एकमात्र तरीका है एक FUNCTION
. के रूप में