2009-08-19 16 views
23

मैं एक विशेष मुद्दे जेपीए/वसंत का उपयोग कर के साथ परेशानी का एक सा हो रही है?जेपीए कई डेटाबेस स्कीमा का उपयोग कर

हमारे पास टैबलेट 1 है जो स्कीमा एडी और टैबलेट 2 से संबंधित है जो बीडी के तहत है।

@Entity 
@Table(name = "TABLE1", schema="S1D") 
... 

@Entity 
@Table(name = "TABLE2", schema="S2D") 
... 

स्कीमा एक एनोटेशन विशेषता में hardcoded नहीं किया जा सकता, क्योंकि यह पर्यावरण (देव/एसीसी/PRD) पर निर्भर करता है। (स्वीकृति में स्कीमा एस 1 ए और एस 2 ए हैं)

मैं इसे कैसे प्राप्त कर सकता हूं? इसे इस तरह प्लेसहोल्डर किसी तरह का निर्दिष्ट करने के लिए संभव है:

@Entity 
@Table(name = "TABLE1", schema="${schema1}") 
... 

@Entity 
@Table(name = "TABLE2", schema="${schema2}") 
... 

ताकि स्कीमा वातावरण में रहने वाले एक संपत्ति फ़ाइल पर आधारित बदल दिया जाता है?

चीयर्स

उत्तर

8

मैं एक ही समस्या मुझे लगता है कि हल एक persistence.xml जिसमें मैं मैं के भीतर orm.xml जरूरत फ़ाइलों का उल्लेख के साथ घोषित db शेमा था

<persistence 
xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 
version="2.0" > 
<persistence-unit name="schemaOne"> 
    . . . 
    <mapping-file>ormOne.xml</mapping-file> 
    . . . 
</persistence-unit> 

<persistence-unit name="schemaTwo"> 
    . . . 
    <mapping-file>ormTwo.xml</mapping-file> 
    . . . 
</persistence-unit> 
</persistence> 
अब

आप अपने विशेष के लिए एक EntityManagerFactory बना सकते हैं स्कीमा

EntityManagerFactory emf=Persistence.createEntityManagerFactory("schemaOne"); 
+0

अगर वहाँ के बारे में ormOne और OrmTwo बीच एक रिश्ता है किस लिए? –

2

एक बात अगर आप तैनाती पर पता है कि तुम क्या कर सकते हैं 2 orm.xml फ़ाइलें है। स्कीमा 1 और स्कीमा 2 के लिए एक और फिर persistence.xml में आपके पास 2 दृढ़ता-इकाइयां परिभाषित हैं। एनोटेशन लाना एक विरोधी पैटर्न अगर स्कीमा जैसी चीजों को बदलने के लिए की आवश्यकता होगी,

0

एनोटेशन तर्क अंतिम रहना होगा और इसलिए कार्यावधि में नहीं बदला जा सकता है।

एन

1

आप अपने context.xml में दो डेटा स्रोत घोषणाओं (प्रत्येक स्कीमा के लिए एक) है और इस datasources का उपयोग कर दो हठ इकाइयों को परिभाषित कर सकते हैं। Context.xml अलग-अलग वातावरण के ऐप्ससेवर पर अलग हो सकता है।

2

कोशिश निम्नलिखित:

puplic class MyClass { 
    public static final String S1D="S1D"; 
    public static final String S2D="S2D"; 
} 

@Entity 
@Table(name = "TABLE1", schema=MyClass.S1D) 
... 

@Entity 
@Table(name = "TABLE2", schema=MyClass.S2D) 
... 
1

जब आप बनाते हैं एक डेटासोर्स, आप कनेक्शन को विभिन्न स्कीमा

उदाहरण के लिए कनेक्शन प्रारंभ करने में सक्षम हो सकते हैं। weblogic

Specify default schema for JDBC pool in weblogic/oracle

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