Использование MergencePersistenceunitManager для загрузки объекта
-
15-11-2019 - |
Вопрос
У меня есть настройка проекта, где у меня есть модуль, который присутствует в папке 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.