Spring 3.1 ohne persistence.xml gibt "Nicht lösen Persistenz-unit-root-URL"

Ich versuche,JPA EntityManagerFactory bootstrapping ohne persistence.xml, was ist neu in Spring 3.1 ist (da M2), aber es scheint, dass der Frühling noch auf der Suche nach einem persistence.xml - Datei trotz der Tatsache, dass packagesToScan angegeben ist.

In context.xml die entityManagerFactory wird konfiguriert wie folgt:

<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>

Aber beim starten der Anwendung, eine PersistenceException mit der Meldung "Unable to resolve Persistenz-unit-root-URL" Auftritt:

...
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

Bevor ich Hinzugefügt packagesToScan hatte ich eine minimale persistence.xml, und legen Sie die persistenceXmlLocation etwa so:

<property name="persistenceXmlLocation"
    value="classpath:META-INF/persistence.xml"/>

die feinen gearbeitet. Also was mache ich jetzt falsch?

Bearbeiten Hinzugefügt jpaVendorAdapter, Fehler bleibt.

Bearbeiten entfernt persistenceUnitName pro gelöschten Kommentar; umbenannt Bohnen auf der persistence unit name (für @PersistenceContext)

update dieser Fehler scheint davon abhängen, welche Art von Anwendung, die Kontext-loader verwendet wird. Der code funktioniert in einem spring/junit test über @ContextConfiguration, aber nicht über ClassPathXmlApplicationContext

InformationsquelleAutor beerbajay | 2011-11-08
Schreibe einen Kommentar