大家好,我正在编写一个OSGi
负责对用户进行身份验证的捆绑软件。出于设计原因,我有义务对多个数据库模式执行查询(这些模式可以动态创建或删除)。我MySQL
作为存储引擎运行。
不知何故,我需要能够为这些模式创建按需实体管理器,但我的尝试并没有成功。这是我尝试过的让我更接近我需要的方法:
使用 JTA 数据源创建持久性单元 (Eclipselink),实际上可以建立到默认模式的数据库连接。但是,当我尝试覆盖任何属性时,例如javax.persistence.jdbc.url
. 但是,它始终指向默认模式。
我相信我没有正确覆盖该属性,或者无法将 JTA 数据源属性从 修改EntityManager
为EntityManager
。以下是我创建 EntityManagers 的方法:
Map<String, String> dbProps = new HashMap<String, String>();
dbProps.put("javax.persistence.jdbc.url","jdbc:mysql://mydomain:3306/mydynamicdb);
EntityManagerFactory fact = Persistence.createEntityManagerFactory("myPersistenceUnit", dbProps);
EntityManager myEM = fact.createEntityManager();
最后,他们都继续指向默认模式,所以我的问题是:
- 这是动态 EntityManager 处理的有效方法吗?如果是这样,我怎样才能有效地覆盖模式属性?
- 除了压倒一切还有其他选择吗?
我提前感谢您提供的任何指导。