java - Multiple persistance unit in persistence.xml creating tables in one another -


मैं जेपीए (हायबरनेट) का उपयोग कर रहा हूं और निम्नलिखित persistence.xml

  & lt; दृढ़ता संस्करण = "1.0" xmlns = "http://java.sun.com/xml/ns/preistence" xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi: स्कीमा स्थान = "Http://java.sun.com/xml/ns/pressistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> & Lt; दृढ़ता-इकाई नाम = "डीबी 1" लेन-देन प्रकार = "RESOURCE_LOCAL" & gt; & LT; प्रदाता & gt; org.hibernate.ejb.HibernatePersistence & lt; / प्रदाता & gt; & LT; वर्ग & gt; com.dto1.AccessRight & lt; / वर्ग & gt; & LT; वर्ग & gt; com.dto1.Component & lt; / वर्ग & gt; & LT; वर्ग & gt; com.dto1.UserRight & lt; / वर्ग & gt; & LT; गुण & gt; & Lt; संपत्ति नाम = "hibernate.cache.provider_class" मान = "org.hibernate.cache.NoCacheProvider" / & gt; & Lt; संपत्ति नाम = "hibernate.hbm2ddl.auto" मान = "अद्यतन" / & gt; & Lt; / गुण & gt; & Lt; / हठ इकाई & gt; & Lt; दृढ़ता-इकाई नाम = "डीबी 2" लेन-देन प्रकार = "RESOURCE_LOCAL" & gt; & LT; वर्ग & gt; com.dto2.Auditlog & lt; / वर्ग & gt; & LT; गुण & gt; & Lt; संपत्ति नाम = "hibernate.cache.provider_class" मान = "org.hibernate.cache.NoCacheProvider" / & gt; & Lt; संपत्ति नाम = "hibernate.hbm2ddl.auto" मान = "अद्यतन" / & gt; & Lt; / गुण & gt; & Lt; / हठ इकाई & gt; & Lt; / हठ & gt;  

कोड में मैं निम्नलिखित तरह से EntityManager कारखाने को प्राप्त करने के लिए निम्न का उपयोग करता हूं:

  निजी स्थिर अंतिम EntityManagerFactory emf_db1 = Perseverence.createEntityManagerFactory (DB1_PU_NAME, getConnectionProp (DB1_PU_NAME) )); निजी स्थिर अंतिम EntityManagerFactory emf_db2 = दृढ़ता .createEntityManagerFactory (DB2_PU_NAME, मिल कनेक्शन कनेक्शन (DB2_PU_NAME)); निजी स्थिर मानचित्र & lt; स्ट्रिंग, स्ट्रिंग & gt; GetConnectionProps (स्ट्रिंग पु) {मानचित्र & lt; स्ट्रिंग, स्ट्रिंग & gt; DbConfProps = नल; DbConfProps = नया हैशमैप & lt; स्ट्रिंग, स्ट्रिंग & gt; (); // डेटाबेस गुणों को कॉन्टेगर करें ConnectionEntity conn_en = ConnectionEntity.getConnectionEntity (); DbConfProps.put ("hibernate.dialect", conn_en.getDbdialect ()); If (pu.equals (DB2_PU_NAME)) {dbConfProps.put ("hibernate.connection.url", conn_en.getDB2_dburl ()); } और {dbConfProps.put ("hibernate.connection.url", conn_en.getDB1_dburl ()); } DbConfProps.put ("hibernate.connection.driver_class", conn_en.getDriver ()); DbConfProps.put ("hibernate.connection.username", conn_en.getUsername ()); DbConfProps.put ("hibernate.connection.password", conn_en.getPassword ()); वापसी dbConfProps; } सार्वजनिक स्थिर javax.preistence.EntityManager getInstance (स्ट्रिंग persistanceUnit) {logger.log ("getInstance दर्ज"); अगर (persistanceUnit.equalsIgnoreCase (DB1_PU_NAME)) {emf_idm.createEntityManager (); } वापसी emf_logs.createEntityManager (); }  

कहां conn_en एक संपत्ति फ़ाइल में dbConfiguration है और इसे से पढ़ता है जो कुछ भी होता है वह यह है कि जब भी मेरा एप्लिकेशन कुछ कार्य करता है, तो डेटाबेस दोनों एक दूसरे टेबल को रनटाइम पर बनाते हैं निष्पादन के दौरान मुझे दोनों डेटाबेस की तालिका में प्रविष्टियां बनाना पड़ता है। डीबी 1 डीबी 2 और उपाध्यक्ष से अतिरिक्त टेबल बनाता है। कोई भी सुझाव गलत क्या हो रहा है?

का प्रयोग करें & lt; exclude-unlisted-classes & gt; सत्य & lt ; / बहिष्कृत-असूचीबद्ध-वर्गों & gt; आपके दोनों दृढ़ता इकाइयों में संस्थाओं के अनुसार जो विशेष हठ इकाई में सूचीबद्ध नहीं हैं, उन्हें इस इकाई द्वारा प्रबंधित नहीं किया जाएगा!

अपडेट: JPA 2 के लिए नए विनिर्देश के अनुसार

प्रबंधित हठ वर्गों का समूह जो दृढ़ता इकाई द्वारा प्रबंधित किया जाता है, इनमें से एक या अधिक का उपयोग करके परिभाषित किया गया है: [81]

  • एनोटेट प्रबंधित दृढ़ता इकाई की जड़ में निहित दृढ़ता वाली कक्षाएं (जब तक कि अपरिचित-असूचीबद्ध वर्ग तत्व निर्दिष्ट नहीं किए जाते हैं)  

और इसके बाद के संदर्भ के साथ बहिष्कृत-असूचीबद्ध है -क्लस xsd

  & lt; xsd: तत्व का नाम = "बाहर-सूचीबद्ध नहीं-वर्ग" प्रकार = "xsd: boolean" default = "true" minOccurs = "0" & ​​gt; & LT; XSD: एनोटेशन & gt; & LT; XSD: प्रलेखन & gt; जब सही पर सेट किया गया तो केवल क्लास और जारों को सूचीबद्ध क्लास के लिए स्कैन किया जाएगा, अन्यथा संलग्न जार या निर्देशिका को भी स्कैन किया जाएगा। जावा एसई दृढ़ता इकाइयों पर लागू नहीं है। & Lt; / XSD: प्रलेखन & gt; & Lt; / XSD: एनोटेशन & gt;   

& lt; खाली-असूचीबद्ध-वर्गों & gt; के डिफ़ॉल्ट मान को true में बदल दिया गया है, यदि आप कार्यान्वयन के लिए JPA 2 का उपयोग कर रहे हैं

एचटीएमएल>

Comments