Java 运行时的EJB3和EntityManagerMap
我需要创建一个EJB3状态,它创建EntityManager的映射。 我想用它来管理运行时动态创建的多个数据库。 我在persistence.xml部署描述符中定义了一个默认的持久性单元 my persistence.xml: (我使用Jboss5并定义了一个数据源)Java 运行时的EJB3和EntityManagerMap,java,jboss,ejb,entitymanager,Java,Jboss,Ejb,Entitymanager,我需要创建一个EJB3状态,它创建EntityManager的映射。 我想用它来管理运行时动态创建的多个数据库。 我在persistence.xml部署描述符中定义了一个默认的持久性单元 my persistence.xml: (我使用Jboss5并定义了一个数据源) java:/mkyong\u jtds 我需要创建10个EntityManager, 每一个都不同于连接ulr,我需要在运行时定义指定的值。 我想从管理用户界面创建它们的 比如: @PersistenceContext(uni
java:/mkyong\u jtds
我需要创建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);
@PersistenceContext(unitName=“mkyong”)
私人实体经理;
Map entityManagerMap=newhashmap();
entityManagerMap.put(“mkyong”,经理);
Map configOverrides=new HashMap();
configOverrides.put(“hibernate.connection.url”,“jdbc:jtds:sqlserver://127.0.0.1:1433/Anagrafe");
EntityManager工厂程序MATICEMF=
createEntityManagerFactory(“mkyong”,configOverrides);
manager1=programmaticEmf.createEntityManager();
entityManagerMap.put(“Anagrafe”,manager1);
在这个示例中,我创建了2个EntityManager
一个自动创建的名为“mkyong”的real EntityManager
在运行时创建了一个名为“Anagrafe”的EntityManager
如果我使用real EntityManager工作正常。。。它创建表…它持久化
但是如果我尝试使用新的。。。不工作。。。它不创建表也不存储值
为什么?
没有错误。。。没有日志。。。简单地说,不要在数据库上写,也不要创建表
PS:如果我在persistence.xml中配置了两个持久性单元,并且使用了两个注入的实体管理器,那么效果很好。如果你只说“它不工作”,没有人会帮你。当你尝试时会发生什么?例外?如果是这样的话,给我们看看例外情况。我编辑了这个问题,添加了更多细节。。。第一个问题是TransactionManager。。。A我加上这一行
@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);