是否有一种方法来创建EntityManagerFactory而不定义持久性单元?您能提供创建实体管理器工厂所需的所有属性吗?我需要在运行时从用户指定的值创建EntityManagerFactory。不能更新persistence.xml并重新编译。
目前我正在使用eclipselink动态持久性所以我需要创建EntityManagerFactory没有持久性单位定义?我有一组运行时实体,需要在运行时将一组实体映射到不同的数据库,并且这个运行时实体组没有可用的持久单元条目。
任何关于如何做到这一点的想法是非常受欢迎的!
您最好的选择是直接访问PersistenceProvider,并使用EJB容器API从PersistenceUnitInfo创建EntityManagerFactory。
PersistenceProvider.createContainerEntityManagerFactory ()
看,http://www.eclipse.org/eclipselink/api/2.5/org/eclipse/persistence/jpa/PersistenceProvider.html createContainerEntityManagerFactory 28 javax.persistence.spi.persistenceunitinfo %, % 20 java.util.map % 29日
刚刚在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