Использование MergencePersistenceunitManager для загрузки объекта

StackOverflow https://stackoverflow.com/questions/9522172

Вопрос

У меня есть настройка проекта, где у меня есть модуль, который присутствует в папке Web-Inf / Lib из файла родительской войны. Этот модуль содержит Spinistence.xml и сущность, которую мне нужно загрузить при нагрузке контейнера JPA во время запуска. Каким-то образом мне нужно объединить настойчивые подразделения войны и лапку Либу. Настойчивость .xml моей войны присутствует в Web-inf / Classes / Meta-Inf, следовательно, это примет Web-inf / Classes в качестве корня настойчивости и не поймут сущность из моего либула. Что я обнаружил трудный путь.

Я наткнулся на несколько человек, предлагающих решения этой проблемы

http://cientprogramming.blogspot.com/2007/ 05 / multi-persistencexml-files-and.html И я также узнал, что есть проект Prience Data-JPA, который имеет MergencePersistenceunitmanager, который объединяет определения классов организаций.

Вот моя конфигурация

<bean id="pum" class="org.springframework.data.jpa.support.MergingPersistenceUnitManager">
  <property name="persistenceXmlLocations">
    <list>
     <value>classpath*:META-INF/persistence.xml</value>
    </list> 
  </property>
  <property name="defaultDataSource" ref="dataSource"></property>
</bean>


<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="LineManagement" />
    <property name="persistenceUnitManager" ref="pum"></property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="generateDdl" value="false" />
            <property name="showSql" value="false" />
            <property name="databasePlatform" ref="cpsHibernateDialectClassName" />
        </bean>
    </property>
.

который не работает. Это дает мне ошибку java.lang.NoSuchMethodError:org.springframework.data.jpa.support.MergingPersistenceUnitManager.getPersistenceUnitInfo(Ljava/lang/String;)Lorg/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo;

У меня нет подсказки, как это дает мне эту ошибку. Из моего понимания MergingPersistenceunitmanager расширяет defaultpersistenceanager. Только то, что я подозреваю, состоит в том, что может быть конфликт.

Вот мои зависимости. Spring-Orm-3.0.2-Release.jar и Spring-data-jpa-1.0.3-Release.jar.

Я могу вернуться к древнему решению программирования, но не стоит просто работать из коробки?

Это было полезно?

Решение

You have mismatching versions of spring-orm and spring-data-jpa. In general arbitrary versions are not guaranteed to play well together.

MutablePersistenceUnitInfo getPersistenceUnitInfo - method is absent from the MergingPersistenceUnitManager (or actually from it's superclass DefaultPersistenceUnitManager) in version orm version 3.0.2.

From same class in version 3.0.5 you can find this method: DefaultPersistenceUnitManager.java Also maven pom for spring-data-jpa-1.0.3 lists dependency to spring-orm 3.0.5. So your problem is solved by using sprin-orm version 3.0.5.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top