Quantcast
Channel: Spring Community Forums - Data
Viewing all articles
Browse latest Browse all 297

Error trying to create persistence unit without persistence.xml

$
0
0
Using 3.1.2 (yes, it's older, too many dependencies to upgrade).

our Spring context is as follows:

Code:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd
                http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                http://www.springframework.org/schema/data/jpa  http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
                ">

        <import resource="classpath:/META-INF/spring/persistence-context.xml" />

        <bean id="entityManagerFactory"
                class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
                p:packagesToScan="persist.properties.model.entities">
                <property name="dataSource" ref="dataSource"/>       
                <property name="jpaVendorAdapter" ref="jpaVendorAdapter"/>
                <property name="loadTimeWeaver">
                        <bean
                                class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
                </property>
                <property name="jpaProperties">
                        <props>
                                <!-- TODO: Replace this 'update' by 'validate' once the installer properly
                                        creates the database tables. -->
                                <prop key="hibernate.hbm2ddl.auto">update</prop>
                        </props>
                </property>
        </bean>

        <bean id="dataSource" class="persist.properties.DataSource" init-method="init" />
        <bean id="jpaVendorAdapter" class="persist.properties.HibernateJpaVendorAdapter" init-method="init" />

</beans>

linking to:
Code:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
        xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
        xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="
                http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-3.0.xsd
                http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
                http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                http://www.springframework.org/schema/data/jpa  http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
                ">

        <jpa:repositories base-package="persist.properties.repositories" />

        <context:property-placeholder /> <!-- This makes all JVM system properties available as properties in this
                file. -->

        <tx:annotation-driven transaction-manager="transactionManager" />

        <bean
                class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
                <property name="entityManagerFactory" ref="entityManagerFactory" />
        </bean>
       
        <context:component-scan base-package="persist.properties" />
       
</beans>

Our custom datasource and hibernate vendor adapters merely use system properties to determine the actual database to connect to on the fly in their constructors, thin wrappers around the internals.

In unit tests, this works great. But when packaged and deployed, we're getting the following error trying to start the application:

Error creating bean with name 'org.springframework.dao.annotation.PersistenceExc eptionTranslationPostProcessor#0': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring/spring-module-context.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: Unable to resolve persistence unit root URL

There is a bug that seems related to this, https://jira.springsource.org/browse/SPR-8832 but it's reported fixed in 3.1.1

Is there something we're missing? Or a workaround to get this working?

Viewing all articles
Browse latest Browse all 297

Trending Articles