2011-05-26 16 views
6

के माध्यम से एक तालिका तालिका क्वेरी निष्पादित करें मुझे एक जेपीए EntityManager के माध्यम से डेटाबेस में एक नई तालिका बनाने की आवश्यकता है। क्या जेपीए नेटिवक्व्यूरीज़ "चयन" या "अपडेट" के अलावा क्वेरीज़ का समर्थन करते हैं? या एक जेपीए संदर्भ में एक जटिल एसक्यूएल क्वेरी निष्पादित करने के लिए एक और अत्याधुनिक तरीका है?जेपीए EntityManager

उत्तर

7

जेपीए "मूल प्रश्न" का उपयोग केवल डीएमएल कथन (डेटा मैनिपुलेशन भाषा) के लिए किया जा सकता है। किसी भी डीडीएल को जारी करने के लिए, जैसे कि बिल्ड टेबल, आपको EntityManager से अंतर्निहित कनेक्शन प्राप्त करने की आवश्यकता होगी।

ईएम से कनेक्शन निकालने के लिए आप किस जेपीए कार्यान्वयन का उपयोग कर रहे हैं, इस पर निर्भर करेगा, लेकिन इसमें निश्चित रूप से EntityManager.getDelegate() का आविष्कार शामिल होगा।

वैकल्पिक रूप से (और मुझे लगता है कि यह एक बेहतर दृष्टिकोण है), डेटासोर्स या जेडीबीसीटीप्लेट इंजेक्ट करें यदि आप ऑब्जेक्ट पर वसंत का उपयोग कर रहे हैं जो तालिका बनाने की कोशिश करता है, और तालिका बनाने के लिए उस वर्ग का उपयोग करें।

0

जेपीए (कम से कम हाइबरनेट) के रूप में आप) सीधे createNativeQuery() और executeUpdate (का उपयोग कर DDL स्टेटमेंट्स को निष्पादित करने दे सकते हैं:

EntityManager em = ...; 
em.createNativeQuery("CREATE TABLE FOO (FOO_ID NUMBER)").executeUpdate(); 
em.createNativeQuery("DROP TABLE FOO").executeUpdate(); 

यह आदर्श नहीं है, लेकिन आप यह कर सकते हैं।

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