2010-08-18 11 views
6

मेरे पास एक ऐसा एप्लिकेशन है जो 3 डेटाबेस प्रबंधित करता है। मैं सीम ढांचे पर जेपीए के साथ हाइबरनेट का उपयोग करता हूं।हाइबरनेट/जेपीए: मैपिंग इकाइयों को विभिन्न डेटाबेस

<persistence-unit name="db1" transaction-type="JTA" > 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>db1source</jta-data-source> 
    <properties> 
     <property name="hibernate.dialect" 
      value="org.hibernate.dialect.Oracle10gDialect" /> 
     <property name="hibernate.connection.driver_class" 
      value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="hibernate.hbm2ddl.auto" value="validate" /> 
     <property name="hibernate.show_sql" value="false" /> 
     <property name="hibernate.format_sql" value="true" /> 
     <property name="hibernate.default_schema" value="SI_TEC" /> 
     <property name="hibernate.validator.apply_to_ddl" value="false" /> 
     <property name="hibernate.transaction.manager_lookup_class" 
      value="org.hibernate.transaction.WeblogicTransactionManagerLookup" /> 
    </properties> 
</persistence-unit> 

<persistence-unit name="db2" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>d2source</jta-data-source> 
</persistence-unit> 

<persistence-unit name="db3" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>d3source</jta-data-source> 
</persistence-unit> 

मेरी सीवन components.xml फ़ाइल में, मैं 3 कामयाब-हठ बनाएँ:

तो मैं इस तरह तीन persitence-यूनिट के साथ एक persitence.xml फ़ाइल है (मैं डीबी 2 और db3 के लिए गुण निकालने के लिए) मेरे हाइबरनेट कॉन्फ़िगरेशन के साथ सीम मैप करने के लिए -context।

अंत में, मेरे पास कई संस्थाएं हैं और मेरी समस्या यहां है। मुझे कुछ इकाइयों को डीबी 2 और अन्य डीबी 3 में जारी रखने की जरूरत है। तो डेटाबेस स्कीमा अलग हैं और जब मैं अपने आवेदन की तैनाती, मैं इस त्रुटि मिलती है:

org.hibernate.HibernateException: Missing table: PORTAILPERMISSION 
    at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1113) 
    at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:139) 
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:349) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1327) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867) 
    Truncated. see log file for complete stacktrace 

क्योंकि, टेबल PORTAILPERMISSION डीबी 2 में मौजूद नहीं है।

मेरा प्रश्न है:

कैसे इकाई कक्षा में निर्दिष्ट करने के लिए क्या डेटाबेस (या persitence इकाई) स्टार्टअप में इकाई सत्यापन के लिए किया जाना चाहिए?

आपकी मदद के लिए धन्यवाद।

उत्तर

4

आप प्रत्येक दृढ़ता इकाई में कक्षाओं (<class>..</class>) को स्पष्ट रूप से सूचीबद्ध करने का प्रयास करते हैं। और

<exclude-unlisted-classes>true</exclude-unlisted-classes> 
+0

मैं ऑटो-डिटेक्शन को कैसे बंद कर सकता हूं? – Kiva

+0

@ किवा मेरा अपडेट देखें – Bozho

+0

धन्यवाद, मैं इसे जोड़ता हूं और सभी ठीक काम करता हूं :) – Kiva

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