2011-12-01 13 views
9

क्या जेपीए द्वारा एकल मूल्यों को स्केलर डेटा प्रकारों में मैप करने के लिए कोई समर्थन है? उदाहरण के लिए, कुछ चरजेपीए का उपयोग कर एकल मूल्य पुनर्प्राप्त कर रहे हैं?

int numerOfEmployees 

के बाद क्वेरी

SELECT COUNT(*) AS NUM FROM EMPLOYEES 

में NUM नक्शा या मैं इस तरह के प्रयोग के मामलों के लिए JDBC का उपयोग करना करना है?

उत्तर

14

हाँ, आप अदिश प्रकार लौट सकते हैं JPQL से प्रश्नों

long num = ((Number)em.createQuery("select count(e) from Employee e") 
        .getSingleResult()).longValue(); 

के साथ ही से देशी एसक्यूएल प्रश्नों:

long num = ((Number)em.createNativeQuery("select count(*) from Employees") 
        .getSingleResult()).longValue(); 

ध्यान दें कि कुछ मामलों में परिणाम प्रकार डेटाबेस, यानी पर निर्भर हो सकता यह BigDecimal जैसा कुछ हो सकता है।

+0

दोह, धन्यवाद। यह समझ में नहीं आया कि दस्तावेज़ों से संभव था: http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html#createNativeQuery(java.lang.String) [ध्यान दें कि मुझे इसका उपयोग करना था ऑब्जेक्ट प्रकार और अपना उदाहरण काम करने के लिए अपने intValue() का उपयोग करें।] –

+0

मैंने '(संख्या) ... longValue()' का उपयोग करने के लिए समाधान को अपडेट किया जो कि 'बिगइंटर' का एक सुपर प्रकार है, मुझे यकीन नहीं है कि क्या है कोई भी डीबी/ड्राइवर जो इस मामले के लिए 'संख्या' का उप-प्रकार नहीं लौटाता है लेकिन मूल उत्तर में '(लंबा)' कास्ट" मेरे लिए "कभी काम नहीं करता है। (मुझे यह भी आश्चर्य है कि क्या आप सुनिश्चित करने के लिए टाइप नंबर मैपिंग के रूप में 'नंबर.क्लास' निर्दिष्ट कर सकते हैं (Double.class काम नहीं करता है: http://stackoverflow.com/questions/8959771/jpql-native-query-using- योग और गिनती) – eckes

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