如何动态注入EntityManager?

时间:2016-07-14 10:26:01

标签: jpa java-ee cdi

我正在编写一个需要链接到用户提供的持久性单元的框架。以前,实体管理器是使用<!DOCTYPE html> <html ng-app="app" ng-controller="AppController"> <head> <title>Title</title> <link rel="stylesheet" href="styles/sheet.css"/> </head> ... 注释注入的,但这是一种静态方式:

@PersistenceContext

现在,我希望作业是动态的。因此,无论持久性单元名称是什么,仍然可以找到关联的实体管理器。这是我的实施:

public class MyItemReader implements ItemReader {

    @PersistenceContext(unitName="myPU")
    private EntityManager em;

    ...
}

我的实现在WildFly中有效,但我不确定它是否适用于其他Java EE容器。当初始背景发生变化时,我不确定它是否有效。

那么,我的实施是一个好方法吗?

1 个答案:

答案 0 :(得分:-1)

不需要在persistanceContext中指定unitName。尝试以下一个..

@PersistenceContext
    public void setEntityManager(EntityManager entityManager) {
        this.entityManager = entityManager;
    }

它会起作用。

由于