Два модуля постоянства в одном файле Persistence.xml - PullRequest
13 голосов
/ 18 марта 2011

Мы создали несколько библиотек, которые будут использовать все наши проекты, эти библиотеки обеспечат базовую функциональность всех наших систем (вход в систему, некоторые из них управляют и т. Д.).Но само приложение может использовать другую базу данных.

Мы создали файл Persistence.xml с двумя постоянными модулями.И упакуйте все основные объекты библиотеки в jar-файл под названием «LN-model.jar» и все объекты нашего тестового приложения в «App-model.jar».Но по какой-то причине мы все еще получаем следующее сообщение:

Не удалось разрешить единицу персистентности, соответствующую имени-персистентности-контекста-ref-имени [xxxxlistener.InicializadorListener / em] в области видимости модуля с именем[gfdeploy # / Пользователи / zkropotkine / РАБОТА / SeguridadCore / расстояние / gfdeploy / SeguridadCore-war_war].Пожалуйста, подтвердите вашу заявку.

Вот наш файл Persistence.xml

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="x" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/x</jta-data-source>
    <jar-file>App-model.jar</jar-file>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties>
    </properties> 
</persistence-unit>

<persistence-unit name="y" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>jdbc/y</jta-data-source>
    <jar-file>LN-model.jar</jar-file>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
</persistence-unit> 

Кстати, мы помещаем файл Persistence.xml в банку, которую мы добавляемв наш корпоративный проект (EAR).

Ответы [ 2 ]

13 голосов
/ 14 сентября 2011

Проблема в том, что JPA не знает, какую единицу сохранения использовать. когда у вас есть только одна единица персистентности, эта проблема не возникает. Для исправления сделайте следующее:

Вам необходимо указать постоянный модуль: @PersistenceContext (unitName = "...") в Ejb, который не имеет

8 голосов
/ 26 ноября 2014

Вы можете добавить аннотации:

@PersistenceUnit(name = "x")
EntityManagerFactory entityManagerFactory;

@PersistenceContext(unitName = "y")
EntityManager entityManager;

Или вы можете создать его вручную:

EntityManagerFactory emfA = Persistence.createEntityManagerFactory("x", properties);
EntityManagerFactory emfB = Persistence.createEntityManagerFactory("y", properties);

Для получения дополнительной информации, пожалуйста, перейдите по следующей ссылке: https://docs.oracle.com/html/E25034_01/usingmultipledbs.htmочень полезно, мне помогли!

...