Да, такая конфигурация возможна.
Чтобы избежать конфликтов со встроенными возможностями JPA c, необходимо выполнить следующие действия:
- Согласно this
В полной среде Java EE рассмотрите возможность получения EntityManagerFactory
от JNDI. В качестве альтернативы, укажите пользовательское значение persistenceXmlLocation
в своем определении LocalContainerEntityManagerFactoryBean
(например, META-INF / my-persistence. xml) и включите только дескриптор с таким именем в файлы Jar приложения. Поскольку сервер Java EE ищет только файлы META-INF/persistence.xml
по умолчанию, он игнорирует такие пользовательские единицы сохранения состояния и, следовательно, избегает конфликтов с предварительной установкой JPA на основе Spring.
Вы можете использовать что-то как это в весеннем контексте конфигурации.
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<!-- ... -->
<jee:jndi-lookup id="DS" jndi-name="appDS" />
<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="classpath:META-INF/app-persistence.xml" />
<property name="dataSource" ref="DS" />
</bean>
<!-- ... -->
</beans>
В соответствии с
это Чтобы настроить FilteringClassLoader
, чтобы указать, что определенный пакет загружается из приложения, добавьте элемент дескриптора prefer-application-packages
в weblogic-application.xml
, который детализирует список пакетов, которые будут загружены из приложения.
Вы должны добавить следующий фрагмент к вашему META-INF/weblogic-application.xml
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application>
<prefer-application-packages>
<!-- ... -->
<package-name>javax.persistence.*</package-name>
</prefer-application-packages>
</weblogic-application>