java - why my schema.ddl is empty after hibernate3-maven-plugin? -


यह परियोजना की निर्देशिका संरचना है (maven2 उपयोग किया जाता है):

  pom Xml / src / main / java Abc.java / resources hibernate.cfg.xml डेटाबेस.प्रॉपर्टीज़ / मेटा- INF persistence.xml / test / java AbcTest.java / resources database.properties  

यह hibernate.cfg.xml की सामग्री है:

  & lt; हाइबरनेट-कॉन्फ़िगरेशन & gt; & Lt; सत्र-फ़ैक्टरी नाम = "java: hibernate / sessionfactory" & gt; & Lt; संपत्ति नाम = "hibernate.archive.autodetection" & gt; सत्य & lt; / property & gt; & Lt; / सत्र-कारखाने & gt; & Lt; / हाइबरनेट-विन्यास & gt;  

यह मेरे पास है persistence.xml :

  & lt; दृढ़ता & gt; & Lt; दृढ़ता-इकाई नाम = "एबीसी" & gt; & LT; JTA-डेटा-स्रोत & gt; जावा: / abcDS & lt; / JTA-डेटा-स्रोत & gt; & LT; गुण & gt; & Lt; संपत्ति नाम = "hibernate.dialect" मान = "org.hibernate.dialect.MySQLDialect" / & gt; & Lt; / गुण & gt; & Lt; / हठ इकाई & gt; & Lt; / हठ & gt;  

और यह मेरा Abc.java फ़ाइल है:

  import javax.preistence। *; @ एंटिटी पब्लिक क्लास एबीसी {@ आईडी निजी आईएनडी आईडी; }  

चलने के बाद mvn clean hibernate3: hbm2ddl मुझे यह आउटपुट मिल रहा है:

  18: 45: 55,770 INFO org .hibernate.tool.hbm2ddl.SchemaExport - फाइल को तैयार की गई स्कीमा लिखना: ../target/hibernate3/sql/schema.ddl 18: 45: 55,770 जानकारी org.hibernate.tool.hbm2ddl.SchemaExport - स्कीमा निर्यात पूर्ण [INFO] - ----------------------------------- [INFO] उन्नत बनाया गया  

फ़ाइल schema.ddl बनाया गया है, और यह खाली है। क्यूं कर? और इसके अलावा, मेरी कॉन्फ़िगरेशन फ़ाइलों में क्या गलत है? जब से मैं यूनिट परीक्षणों को PersistenceContext इंजेक्शन के साथ NullPointerException के साथ विफल करने की कोशिश कर रहा हूँ। ऐसा लगता है कि कॉन्फ़िगरेशन में कुछ समस्या है। कोई मैन्युअल ऑनलाइन नहीं मिल सकता है ...

पीएस। दो समस्याएं हैं, मैंने उन्हें पहले से ही मिला सबसे पहले एक है (अतिरिक्त उपसर्ग को हटा दिया जाना चाहिए):

  & lt; संपत्ति नाम = "archive.autodetection" & gt; सच & lt; / property & gt;  

दूसरा वाला अधिक दिलचस्प है जब मैं mvn hibernate3: hbm2ddl संकलन के बाद चलाता हूं तो यह काम करता है (क्योंकि इसमें .class फ़ाइलों के साथ काम करने के लिए है)। अन्यथा स्कीमा खाली है .. जावा क्लास को पहले से संकलित करने के लिए इस प्लगइन को कैसे निर्देशित किया जाए?

दो समस्याएं हैं, मैंने उन्हें पहले से ही पाया सबसे पहले एक है (अतिरिक्त उपसर्ग को हटा दिया जाना चाहिए)

वास्तव में इसलिए मैं इसे छोड़ूँगा।

जावा क्लास को पहले से संकलित करने के लिए इस प्लगइन को कैसे निर्देशित किया जाए?

संभव नहीं है (लेकिन दूसरी तरफ , अर्थात्, संकलन के बाद प्लगिन चल रहा है, जैसा कि हम देखेंगे)।

तथ्य यह है कि हाइबरनेट 3 मेवेन प्लगइन, जो एनोटेशन की भविष्यवाणी करता है, को शुरू में hbm.xml मैपिंग फाइलों से निपटने के लिए डिज़ाइन किया गया है। और यही कारण है कि अपने आप को कार्यान्वित करने से पहले जीवनचक्र चरण प्रक्रिया-संसाधनों के निष्पादन को आमंत्रित करता है

मैपिंग के लिए एक्सएमएल फाइलों के बजाय एनोटेशन का उपयोग करते समय, लक्ष्य को वास्तव में compile चरण के बाद चलाना होगा (चरण एक प्राकृतिक उम्मीदवार होगा), लेकिन यह वर्तमान नहीं है hibernate3: hbm2ddl का व्यवहार।

इसलिए आपको लक्ष्य को लागू करने से पहले संकलन को चलाने के लिए करना होगा:

  Mvn संकलित हाइबरनेट 3: एचबीएम 2 डीडी  

दूसरा विकल्प होगा कि hibernate3: hbm2ddl निर्माण जीवन चक्र पर, जैसे पर प्रक्रिया-वर्गों :

  & lt; परियोजना & gt; ... & lt; बिल्ड & gt; & LT; प्लगइन्स & gt; & LT; प्लगइन & gt; & LT; ग्रुप & gt; org.codehaus.mojo & lt; / ग्रुप & gt; & LT; artifactId & gt; hibernate3-Maven-प्लगइन & lt; / artifactId & gt; & LT; संस्करण & gt; 2.2 & lt; / संस्करण & gt; & LT; फांसी & gt; & LT; निष्पादन & gt; & Lt; चरण & gt; प्रक्रिया-वर्गों & lt; / चरण & gt; & lt;! - संकलन भी काम करेगा - & gt; & LT; लक्ष्यों & gt; & LT; लक्ष्य & gt; hbm2ddl & lt; / लक्ष्य & gt; & Lt; / लक्ष्यों & gt; & Lt; / निष्पादन & gt; & Lt; / फांसी & gt; & Lt; / प्लगइन & gt; & Lt; / प्लगइन्स & gt; & Lt; / निर्माण & gt; ... & lt; / प्रोजेक्ट & gt;  

और फिर प्लगिन ट्रिगर करने के लिए बस process-class चलाएं:

  mvn process-classes   

Comments