2011-01-18 11 views
5

काम नहीं करता मैं persistence.xmlहाइबरनेट जेपीए इकाई परीक्षण autodection

<persistence-unit name="test" transaction-type="RESOURCE_LOCAL"> 
    <class>com.merc.model.log.EventLogging</class> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
    <properties> 
     <!-- Scan for annotated classes and Hibernate mapping XML files --> 
     <property name="hibernate.archive.autodetection" value="class"/> 
    </properties> 
</persistence-unit> 

में निम्नलिखित है मैं com.merc.model.log.EventLogging बाहर टिप्पणी, मैं अज्ञात इकाई अपवाद मिलता है।

क्यों autodetection कार्य नहीं करेगा

उत्तर

13

इस तथ्य यह है कि डिफ़ॉल्ट रूप से इस autodetection ही classpath आइटम जहां persistence.xml स्थित है अंदर वर्गों के लिए काम करता है के कारण हो सकता है के रूप में कोई भी विचार।

तो, आपके पास कोड के लिए और परीक्षण के लिए अलग-अलग लक्ष्य फ़ोल्डर्स हैं (उदाहरण के लिए, यदि आप डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ मेवेन का उपयोग करते हैं), और यदि यह persistence.xml संकलन के बाद परीक्षण फ़ोल्डर में समाप्त होता है, मुख्य से कक्षाएं लक्ष्य फ़ोल्डर का पता नहीं लगाया जाएगा।

आप अन्य classpath आइटम है कि संस्थाओं के लिए खोजा जाना चाहिए करने के लिए बात करने के लिए <jar-file> तत्वों का उपयोग कर सकते हैं।

आप Maven का उपयोग करते हैं, तो आप संसाधन को छानने का उपयोग करते हुए सुरुचिपूर्ण तरीके से कर सकते हैं:

persistence.xml:

<jar-file>${project.build.outputDirectory}</jar-file> 

pom.xml:

<build> 
    <testResources> 
     <testResource> 
      <directory>src/test/resources</directory> 
      <filtering>true</filtering> 
     </testResource> 
    </testResources> 
</build> 
+0

और स्पष्टीकरण – user373201

+0

मैं के लिए धन्यवाद आपने जो बताया उसका प्रयास किया, लेकिन अब मुझे निम्न त्रुटि मिलती है। मैं Maven का उपयोग कर रहा है और एक इकाई परीक्षण चलाने का प्रयास - से URL [फ़ाइल: /media/01CB9CAC704E03A0/Projects/spring/hibernate/genericdao/target/test-classes/META-INF/persistence.xml] हठ इकाई पार्स नहीं कर सकता – user373201

+0

@ user373201: यह जांचें कि यह 'persistence.xml' संकलन के बाद कैसा दिखता है, क्या मेवेन ने प्लेसहोल्डर को हल किया है? – axtavt

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