Мне нужно сделать EJB3 с состоянием, который создает карту EntityManager.
Я хочу использовать его для управления многопользовательской базой данных, динамически создаваемой во время выполнения.
Я определяю один постоянный модуль по умолчанию в дескрипторе развертывания persistence.xml.
my persistance.xml:
(я использовал Jboss5 и определил источник данных)
<persistence-unit name="mkyong">
<jta-data-source>java:/mkyong_jtds</jta-data-source>
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm" />
<property name="hibernate.hbm2ddl.auto" value="create" />
<property name="hibernate.jdbc.batch_size" value="50" />
<property name="hibernate.max_fetch_depth" value="5" />
<property name="hibernate.show_sql " value="true" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
</properties>
</persistence-unit>
Мне нужно создать 10 EntityManager,
каждый из них отличается только от соединения ulr, и мне нужно определить указанные значения во время выполнения.
Я хочу создать их из административного пользовательского интерфейса.
что-то вроде:
@PersistenceContext(unitName="mkyong")
private EntityManager manager;
Map<String, EntityManager> entityManagerMap = new HashMap<String, EntityManager>();
entityManagerMap.put("mkyong", manager);
Map<String, Object> configOverrides = new HashMap<String, Object>();
configOverrides.put("hibernate.connection.url", "jdbc:jtds:sqlserver://127.0.0.1:1433/Anagrafe");
EntityManagerFactory programmaticEmf =
Persistence.createEntityManagerFactory("mkyong", configOverrides);
manager1=programmaticEmf.createEntityManager();
entityManagerMap.put("Anagrafe", manager1);
В этом примере я создал 2 EntityManager
Один настоящий EntityManager, созданный автоматически с именем mkyong.
Один EntityManager, созданный во время выполнения с именем Anagrafe.
...
Если я использую настоящий EntityManager, он отлично работает ... он создает таблицу ... он сохраняется ..
но если я попытаюсь использовать новый ... dont'work ... он не создает таблицу и не сохраняет значения
Почему?
NO ERROR ... NO LOG ... просто не пишите в БД и не создавайте таблицы
PS: если я сконфигурирую два модуля персистентности внутри файла persistance.xml и использую два внедренных менеджера сущностей, все будет работать нормально.