Estoy tratando de usar JPA EntityManagerFactory bootstrapping without persistence.xml, que es nuevo en Spring 3.1 (desde M2), pero parece que la primavera todavía está buscando un archivo persistence.xml
, a pesar de que se especifica packagesToScan
.Spring 3.1 sin persistencia.xml da "No se puede resolver la URL raíz de unidad de persistencia"
En context.xml, la EntityManagerFactory está configurado de esta manera:
<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>
Pero al iniciar la aplicación, un PersistenceException
con el mensaje "No se puede resolver URL raíz unidad de persistencia" situaciones:
...
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
Antes Agregué packagesToScan
, tenía un persistence.xml
mínimo, y configuré el persistenceXmlLocation
, así:
<property name="persistenceXmlLocation"
value="classpath:META-INF/persistence.xml"/>
que funcionó bien. Entonces, ¿qué estoy haciendo incorrectamente ahora?
editar sumado jpaVendorAdapter
, el error permanece.
editar removed persistenceUnitName por un comentario eliminado; habas cambia al nombre de la unidad de persistencia (por @PersistenceContext
)
actualización este error parece depender sobre la cual se utiliza tipo de aplicación contextual de carga. El código funciona en una prueba de primavera/junio a través de @ContextConfiguration
, pero no a través de ClassPathXmlApplicationContext
Eliminar esto no hizo diferencia; mismo error. – beerbajay
@beerbajay: Actualizado. – axtavt
Genial, supongo que mantendré mi mínima persistencia.xml por ahora y ver cómo responden al informe de errores. – beerbajay