में मूल स्केलर क्वेरी पर प्रॉक्सी लौटाता है। मैं अपने जेपीए दृढ़ता प्रदाता को एक्लिप्ससेंक 2.3 से हाइबरनेट 3.6.5 पर स्विच करने पर काम कर रहा हूं। अंतिम। समस्या एक देशी क्वेरी के साथ है। नोट: यह ग्रहण लिंक के साथ कोई समस्या नहीं थी। मैं एक तालिका से एक स्केलर मान, String
प्राप्त करने का प्रयास कर रहा हूं जिसके लिए मेरे पास कोई इकाई घोषित नहीं है।getSingleResult हाइबरनेट
Query q = em.createNativeQuery("select description from foo where foo_id = ?");
q.setParameter(1, fooId);
String description = (String)q.getSingleResult();
हाइबरनेट के साथ मैं एक ClassCastException
मिलता है क्योंकि वस्तु लौटे वास्तव में एक प्रॉक्सी वस्तु है: यहाँ कोड है। मुझे नहीं पता कि यह किस प्रकार का है, लेकिन मुझे पता है कि यह एक सरणी नहीं है (object.getClass().isArray()
गलत है) और मुझे पता है कि यह एक सूची नहीं है (object instanceof List
false
है)।
मुझे क्या याद आ रही है?
क्या इंटरफ़ेस 'q.getSingleResult()। GetClass()। GetInterfaces()' वापसी? –
अहह ... यही वही था जो मुझे चाहिए था। यह java.sql.Clob, org.hibernate.engine.jdbc.WrappedClob, और java.io.Serializable प्रकार का है। यदि आप इसे उत्तर देते हैं तो मैं इसे स्वीकार करूंगा। मुझे यह भी पता नहीं था कि कॉलम एक क्लोब था और मुझे हैरान है कि एक्लिप्ससेंक मेरे लिए स्ट्रिंग में रूपांतरण कर रहा था। – Ryan
खुश मैं मदद कर सकता था! –