настроить Hibernate на использование переименованного файла persistence.xml - PullRequest
6 голосов
/ 10 ноября 2011

Нам нужно переименовать файл persistence.xml, чтобы обмануть WebSphere 7, чтобы он не использовал встроенный OpenJPA.

Это довольно легко сделать, когда вы используете Spring, вы просто указываете его фабрике диспетчера сущностей использовать другойрасположение файла persistence.xml:

<property name="persistenceXmlLocation" value="META-INF/persistence-xxx.xml"/>

Но теперь мы хотим использовать обычный Hibernate / JPA без Spring и не можем найти способ указать альтернативное расположение файла persistence.xml.

Спецификация JPA2 ничего не говорит об этом ...

Есть какие-нибудь подсказки?Можно ли дать Hibernate команду использовать переименованный файл persistence.xml?

======

Похоже, что Hibernate невозможно прочитать переименованный файл persistence.xml.И не обязательно в моем случае.

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Насколько я знаю, невозможно изменить местоположение файла persistence.xml.

Также взгляните на этот документ: Альтернативные JPA-провайдеры в WebSphere Application Server Похоже, что вы должны иметь возможность использовать Hibernate в качестве поставщика JPA, указав его в файле persistence.xml и вставив необходимые jar-файлы в ваше приложение.

Убедитесь, что ваш файл persistence.xml указывает Hibernate как JPAprovider:

<persistence>
    <persistence-unit name="myapp">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>

Этого также можно достичь, создав общую библиотеку и используя ее для настройки WebSphere для использования альтернативного поставщика сохраняемости.Здесь вы можете найти, как это сделать: Настройка поставщика сохраняемости по умолчанию для API сохранения Java (JPA)

РЕДАКТИРОВАТЬ Учитывая информацию в комментариях к этому ответу, этокажется, что проблему можно решить, добавив эти свойства в persistence.xml, как указано в этом посте Проблема создания Websphere EntityManagerFactory :

<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup" />

<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.CMTTransactionFactory" />

Эта же информация также содержится в альтернативном JPAПоставщики в документе WebSphere Application Server.

0 голосов
/ 10 ноября 2011

файл persistence.xml должен существовать в каталоге META-INF, обычно упакованном вместе с файлом jar, содержащим ваши классы сущностей. Что я делаю, так это то, что у меня есть сущностные предложения в отдельном проекте в eclipse, с каталогом META-INF, который содержит файл persistence.xml, упаковывает этот файл jar и включает его в зависимости проекта приложения (т. Е. WEB-INF / lib) или разверните его прямо на сервере приложений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...