2

有没有办法在没有定义持久性单元的情况下创建 EntityManagerFactory?您能否提供创建实体管理器工厂所需的所有属性?我需要在运行时根据用户指定的值创建 EntityManagerFactory。更新 persistence.xml 并重新编译不是一种选择。

目前我正在使用eclipselink 动态持久性,所以我需要创建没有定义持久性单元的 EntityManagerFactory 吗?我有一组运行时实体,需要在运行时将单个实体组映射到不同的数据库,并且没有可用于该运行时实体组的持久性单元条目。

任何关于如何做到这一点的想法都非常受欢迎!

4

2 回答 2

0

您最好的选择是直接访问 PersistenceProvider 并使用 EJB 容器 API 从 PersistenceUnitInfo 创建 EntityManagerFactory。

PersistenceProvider.createContainerEntityManagerFactory()

见, http://www.eclipse.org/eclipselink/api/2.5/org/eclipse/persistence/jpa/PersistenceProvider.html#createContainerEntityManagerFactory%28javax.persistence.spi.PersistenceUnitInfo,%20java.util.Map%29

于 2013-06-05T13:44:01.137 回答
-1

刚刚在 DataNucleus 文档中看到:

import org.datanucleus.metadata.PersistenceUnitMetaData;
import org.datanucleus.api.jpa.JPAEntityManagerFactory;

PersistenceUnitMetaData pumd = new PersistenceUnitMetaData("dynamic-unit", "RESOURCE_LOCAL", null);
pumd.addClassName("org.datanucleus.test.A");
pumd.setExcludeUnlistedClasses();
pumd.addProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:nucleus");
pumd.addProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
pumd.addProperty("javax.persistence.jdbc.user", "sa");
pumd.addProperty("javax.persistence.jdbc.password", "");
pumd.addProperty("datanucleus.autoCreateSchema", "true");

EntityManagerFactory emf = new JPAEntityManagerFactory(pumd, null);

http://www.datanucleus.org/products/accessplatform_3_2/jpa/persistence_unit.html

于 2013-06-15T13:21:44.330 回答