तो entity.getHistory() अशक्त निम्नलिखित कोड का टुकड़ा है:PostgreSQL JDBC अशक्त स्ट्रिंग एक bytea के रूप में लिया
(getEntityManager() रिटर्न वसंत इंजेक्शन EntityManager, डाटाबेस क्षेत्र इतिहास प्रकार है: किसी पाठ या varchar2 (2000)
Query query = getEntityManager().createNativeQuery("insert into table_name(..., history, ....) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)")
[...]
.setParameter(6, entity.getHistory())
[...]
query.executeUpdate();
देता है अजीब अपवाद:
17/11/11 06:26:09:009 [pool-2-thread-1] WARN util.JDBCExceptionReporter:100 - SQL Error: 0, SQLState: 42804
17/11/11 06:26:09:009 [pool-2-thread-1] ERROR util.JDBCExceptionReporter:101 - ERROR: **column "history" is of type text but expression is of type bytea**
संकेत: आप को फिर से लिखने या अभिव्यक्ति कास्ट करने के लिए की आवश्यकता होगी
।ओएस: CentOS रिलीज 5.6 (अंतिम)
जावा: 1.6.0_26
डीबी: PostgreSQL 8.1
JDBC ड्राइवर: PostgreSQL-9.1-901.jdbc4
अनुप्रयोग सर्वर: अपाचे
समस्या केवल इस विन्यास में हुई -टॉमकैट-6.0.28
सबकुछ कुछ अन्य कॉन्फ़िगरेशन या जब इतिहास खाली स्ट्रिंग पर ठीक काम कर रहा है। pgAdmin से निष्पादित वही कथन ठीक काम करता है।
मुझे लगता है कि समस्या PostgreSQL जेडीबीसी ड्राइवर में है, क्या शून्य कार्य के रूप में शून्य स्ट्रिंग का इलाज करने के लिए कुछ समझदार कारण है? शायद पोस्टग्रेस 8 और 9 के बीच कुछ अजीब बदलाव?
मुझे एंटिटी मैनेजर को संदेह होगा कि गलत मूल्यों के लिए गलत 'PreparedStatement.setXXX() 'विधि को कॉल किया जाए। आप 8.1 जेडीबीसी ड्राइवर भी कोशिश कर सकते हैं। बीटीडब्ल्यू: क्या आप जानते हैं कि 8.1 अब समर्थित नहीं है? –
क्या आप अपने पहले दो अनुच्छेदों को स्पष्ट कर सकते हैं? वे समझ में नहीं आता है। –
पोस्टग्रेएसक्यूएल 9 + (@a_horse_with_no_name क्लाइंट के पास 8.1 होना चाहिए ...), विंडोज 7 इत्यादि के साथ ठीक कोड काम कर रहा है। अगर इकाई है .getHistory() शून्य के बजाय यह काम कर रहा है। PgAdmin से निष्पादित वही डालने ठीक काम करता है। – laidlook