"JPA EntityManagerFactory bootstrapping without persistence.xml, Spring 3.1'de (M2'den beri) kullanılmaya çalışıyorum, fakat yine de baharın persistence.xml
dosyasını aradığı anlaşılıyor packagesToScan
belirtilmesine rağmen. context.xml olarakSpring 3.1 "Kalıcı birim kök URL'sini çözülemiyor"
, entityManagerFactory thusly yapılandırılır:
<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>
Fakat uygulama başlangıçta
iletiyle birPersistenceException
"kalıcılık birim kök URL'yi çözülemiyor" oluşur:
...
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
önce packagesToScan
ekledim, en az persistence.xml
vardı ve persistenceXmlLocation
'u şöyle ayarlayın:
<property name="persistenceXmlLocation"
value="classpath:META-INF/persistence.xml"/>
012 Iyi çalışan
. Peki şimdi yanlış ne yapıyorum?
düzenleme eklendi jpaVendorAdapter
, hata devam ediyor.
edit persistenceUnitName silinmiş bir açıklama başına kaldırıldı; (@PersistenceContext
için) kalıcılık birimi adının
güncelleme bu hata olarak değiştirildi fasulye uygulama bağlamı yükleyicinin tür kullanıldığı bağlı görünmektedir. Kod, @ContextConfiguration
aracılığıyla bir ilkbahar/tekrar testinde çalışır, ancak ClassPathXmlApplicationContext
Bunu kaldırmak hiç fark yaratmadı; aynı hata. – beerbajay
@beerbajay: Güncellendi. – axtavt
Harika, sanırım minimum sürekliliğimi koruyacağım.Şimdilik xml ve hata raporuna nasıl tepki verdiklerini gör. – beerbajay