मैं weblogic और ओरेकल का उपयोग कर एक वेब अनुप्रयोग प्रोग्रामिंग कर रहा हूँ कैसे बदलें। डेटा स्रोत को जेएनडीआई के माध्यम से कॉन्फ़िगर किया गया है, एक प्रतिबंधित डेटाबेस उपयोगकर्ता जो टेबल में डीएमएल कर सकता है, लेकिन डीडीएल नहीं कर सकता है। जैसा कि आप अनुमान लगा सकते हैं, वह उपयोगकर्ता उन तालिकाओं का स्वामी नहीं है, लेकिन उन्हें पहुंच प्रदान की गई है।जेपीए - EclipseLink - डिफ़ॉल्ट स्कीमा
मान लीजिए कि वह GUEST_USER
आवेदन जेपीए + EclipseLink उपयोग कर रहा है, और संस्थाओं को पहले से ही परिभाषित के बहुत करते हैं। मैं स्कीमा को बदलने के लिए प्रत्येक इकाई वर्ग में विशेषता लिखना नहीं चाहता हूं। मैंने इस कोड के साथ सत्र सत्रकार की कोशिश की है।
public class MyCustomizer implements SessionCustomizer{
@Override
public void customize(Session session) throws Exception {
session.executeNonSelectingSQL("ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA");
}
}
ऐसा लगता है कि वहाँ कुछ uninitiallized, मैं एक नल पॉइंटर एक्सेप्शन हो रही है कि, मैं भी यकीन है कि अगर इस तरह से इससे पहले कि वे उपयोग किया जाता है कनेक्शन के लिए स्कीमा बदलने के लिए है नहीं कर रहा हूँ। कोई नमूने या विचार?
आपकी मदद के लिए अग्रिम धन्यवाद!
+1 यह लग रहा है अच्छा –
इस गतिशील नहीं अच्छा है लेकिन अभी भी है, क्या मैं स्कीमा दो diff db उदाहरणों के लिए एक ही एप्लिकेशन की ओर इशारा करते के दो संस्करणों के लिए बदल की जरूरत है? –
इसके अलावा यदि मैं किसी विशेष इकाई प्रबंधक के लिए 'SET search_path TO ...' के साथ स्कीमा सेट करता हूं, तो अन्य तरीकों से इकाई प्रबंधक को पास करने से कोई प्रभाव नहीं पड़ता है। मुझे लगता है Wildfly (मेरे मामले में) पूल के कनेक्शन से एक पहले से वहाँ ऐसा करने का एक जेपीए मानक तरीका है सार्वजनिक डिफ़ॉल्ट स्कीमा – Chris