मैं JPA EntityManagerFactory bootstrapping without persistence.xml का उपयोग करने की कोशिश कर रहा हूं, जो वसंत 3.1 (एम 2 के बाद से) में नया है, लेकिन ऐसा लगता है कि वसंत अभी भी persistence.xml
फ़ाइल की खोज कर रहा है , इस तथ्य के बावजूद कि packagesToScan
निर्दिष्ट है।स्प्रिंग 3.1 बिना persistence.xml "दृढ़ता इकाई रूट यूआरएल को हल करने में असमर्थ"
context.xml में, entityManagerFactory thusly कॉन्फ़िगर किया गया है:
<bean id="my-persistence-unit"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="persistenceProviderClass"
value="org.hibernate.ejb.HibernatePersistence"/>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
</property>
<property name="jpaProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>my.package.name</value>
</list>
</property>
</bean>
लेकिन आवेदन स्टार्टअप पर, संदेश के साथ एक PersistenceException
"हठ इकाई जड़ URL का समाधान करने में असमर्थ" होती है:
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'my-persistence-unit' defined in class path resource [META-INF/context.xml]:
...
Caused by: javax.persistence.PersistenceException: Unable to resolve persistence unit root URL
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:429)
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.preparePersistenceUnitInfos(DefaultPersistenceUnitManager.java:327)
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.afterPropertiesSet(DefaultPersistenceUnitManager.java:309)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:209)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1504)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1442)
... 34 more
Caused by: java.io.FileNotFoundException: class path resource [] cannot be resolved to URL because it does not exist
at org.springframework.core.io.ClassPathResource.getURL(ClassPathResource.java:179)
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.determineDefaultPersistenceUnitRootUrl(DefaultPersistenceUnitManager.java:426)
... 40 more
से पहले मैं packagesToScan
कहा, मैं एक न्यूनतम persistence.xml
था, और persistenceXmlLocation
निर्धारित करते हैं, जैसे इतना:
<property name="persistenceXmlLocation"
value="classpath:META-INF/persistence.xml"/>
जो ठीक काम किया। तो अब मैं गलत तरीके से क्या कर रहा हूँ?
संपादितjpaVendorAdapter
कहा, त्रुटि बनी हुई है।
संपादित करें हटाए गए टिप्पणी के अनुसार निरंतरता UnitName; हठ इकाई का नाम (@PersistenceContext
के लिए)
अद्यतन इस त्रुटि के लिए नाम बदला बीन्स निर्भर करने के लिए जिस पर आवेदन संदर्भ लोडर की तरह प्रयोग किया जाता है लगता है। कोड @ContextConfiguration
के माध्यम से एक वसंत/जूनिट परीक्षण में काम करता है, लेकिन ClassPathXmlApplicationContext
इसे हटाने से कोई फर्क नहीं पड़ता; एक ही त्रुटि – beerbajay
@bebbayay: अपडेट किया गया। – axtavt
ग्रेट, मुझे लगता है कि मैं अपना न्यूनतम दृढ़ता रखूंगा।अब के लिए एक्सएमएल देखें और देखें कि वे बग रिपोर्ट का जवाब कैसे देते हैं। – beerbajay