Spring 3.1 без persistence.xml выдает «Невозможно разрешить корневой URL-адрес блока сохранения состояния»

Я пытаюсь использовать Загрузка JPA EntityManagerFactory без persistence.xml , которая появилась в Spring 3.1 (начиная с M2), но похоже, что Spring все еще ищет файл persistence.xml , несмотря на то, что Указан packagesToScan .

В context.xml entityManagerFactory настроен следующим образом:


    
    
    
        
    
    
        
            org.hibernate.dialect.PostgreSQLDialect
        
    
    
        
            my.package.name
        
    

Но при запуске приложения возникает 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 , например:


, который работал нормально.Итак, что я сейчас делаю неправильно?

edit добавил jpaVendorAdapter , ошибка остается.

edit удалено persistenceUnitName для удаленного комментария; bean-компоненты переименованы в имя единицы сохранения состояния (для @PersistenceContext )

update эта ошибка, похоже, зависит от того, какой тип загрузчика контекста приложения используется. Код работает в тесте spring / junit через @ContextConfiguration , но не через ClassPathXmlApplicationContext

10
задан beerbajay 9 November 2011 в 14:09
поделиться