小编Joe*_*vac的帖子

基于容器的EntityManager的动态@PersistenceContext unitName属性

基本上,我想做的是为@PersistenceContext分配' unitName '属性,其值是我将在运行时从Session获得的.

详情;

我的应用程序将是一个SaaS应用程序,我将为每个不同的租户提供单独的数据库.我正在使用Glassfishv3并管理基于容器的实体,所以我没有明确地从EntityManagerFactory获取任何实例.我为创建实体经理所做的一切都是;

@PersistenceContext(unitName = "DBNAME")
private EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

我需要根据当前用户传递unitName属性.它不应该是硬编码的.

我已经更新了Eclipselink 2.3但是所有的例子都是从EMF创建一个实例,你可以传递属性Map

Map memberProps = new HashMap();
memberProps.put("memberPu1", props1);
memberProps.put("memberPu2", props2);

Map props = new HashMap();
props.put("eclipselink.jdbc.exclusive-connection.mode", "Always");
props.put("eclipselink.composite-unit.properties", memberProps);

EntityManager em = emf.createEntityManager(props);
Run Code Online (Sandbox Code Playgroud)

不太可能在我的应用程序中,容器执行该工作,所以我无法做到这一点

EntityManager em = emf.createEntityManager(props);
Run Code Online (Sandbox Code Playgroud)

即使我在我所有的持久化单元和类的persistence.xml使用JNDI定义,我不能够告诉它DB(持久性单元),它应该在当时使用的应用程序服务器

任何帮助,将不胜感激

jpa eclipselink java-ee ejb-3.0 glassfish-3

10
推荐指数
1
解决办法
6495
查看次数

标签 统计

eclipselink ×1

ejb-3.0 ×1

glassfish-3 ×1

java-ee ×1

jpa ×1