Можно ли установить каталог постоянных единиц по умолчанию во время выполнения - PullRequest
0 голосов
/ 25 марта 2011

На данный момент я использую табличную аннотацию, содержащую каталог

@Table(catalog = "Mycatalog", schema = "MySchema", name = "MyTable")

Но имя каталога должно быть настраиваемым.

Файл persistence.xml нельзя изменить для каждого развертывания, и для базы данных источника данных по умолчанию должно быть задано значение TempDB. (Другой процесс довольно часто блокирует каталог, и драйвер сохраняет соединение открытым с базой данных источника данных по умолчанию), поэтому я могу изменить каталог по умолчанию, используя свойства, переданные EntityManagerFactory.

EntityManagerFactory emf = provider.createEntityManagerFactory(
                "default", properties);

Можно ли установить каталог свойств по умолчанию для единиц хранения в свойствах?

Я использую eclipselink в качестве поставщика JPA.

1 Ответ

0 голосов
/ 12 мая 2011

Мне удалось использовать разные каталоги, если они находятся в файлах конфигурации XML.

Сначала я удалил все аннотации @Table из своих классов сущностей и создал два файла orm.

persistence.xml:

<persistence 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 persistence_1_0.xsd"
    version="1.0">
    <persistence-unit name="storeone" transaction-type="RESOURCE_LOCAL">
        <mapping-file>META-INF/orm-storeone.xml</mapping-file>
    </persistence-unit>

    <persistence-unit name="storetwo" transaction-type="RESOURCE_LOCAL">
        <mapping-file>META-INF/orm-storetwo.xml</mapping-file>
    </persistence-unit>
</persistence>

ОРМ-storeone-XML:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
    version="1.0">

    <entity class="com.package.EntityClass">
        <table catalog="SomeCatalog" schema="SomeSchema" name="SomeTable" />
    </entity>
</entity-mappings>

И затем в коде, где я создаю свой EntityManager, я могу выбирать между двумя каталогами.

String persistencUnitName = "storeone";
EntityManagerFactory emf = provider.createEntityManagerFactory(
                persistencUnitName , map);

таким образом я могу переключаться между каталогами во время выполнения (но я все еще не могу добавлять новые каталоги во время выполнения).

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