当您不确定单位名称时,如何创建EntityManager?

Bri*_*asa 7 java jpa java-ee java-ee-6 jpa-2.0

我正处于需要在运行时确定EntityManager的单元名称的情况.

例如,我想做这样的事情:

@PersistenceContext(unitName = findAppropriateJdbcName())
EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

但是,注释不可能实现这一点.

当你不确定单元名称是什么直到运行时,是否可以创建EntityManager?

Jim*_*ugh 7

可以在运行时指定持久性单元(PU)名称,但这是在创建而EntityManagerFactory不是个人时使用的参数EntityManager.请参阅Javadoc中Persistence类方法createEntityManagerFactory().例:

EntityManagerFactory emf = Persistence.createEntityManagerFactory(unitname);
EntityManager em = emf.createEntityManager();
// ...
Run Code Online (Sandbox Code Playgroud)

我在非Java EE应用程序中执行此操作(在Tomcat托管的Web应用程序中使用Java 6 SE调用),但我不确定如何在容器管理的Java EE 6应用程序中执行相同的操作.有可能的.