WebLogi c 12 c (12.2.1.4) с Hibernate 5.4 - PullRequest
1 голос
/ 25 января 2020

У меня есть приложение, развернутое в WebLogi c 12 c (12.2.1.4) с использованием Hibernate 5.2.18. Weblogi c 12 c do c ссылается на совместимость с JPA 2.1, а для Hibernate 5.3+ требуется JPA 2.2. Могу ли я добавить JPA 2.2 API к моему начальному пути к классу и использовать Hibernate 5.3+ или мне следует придерживаться Hibernate 5.2 на данный момент?

1 Ответ

0 голосов
/ 26 января 2020

Да, такая конфигурация возможна.

Чтобы избежать конфликтов со встроенными возможностями JPA c, необходимо выполнить следующие действия:

  1. Согласно 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...