我在浏览时多次看到这种情况..人们正在使用@Inject
注释自己注入EntityManager
这样:
@Inject @MyEm EnityManager em;
因为你不能只注入EntityManager
。您只能使用@PersistenceContext
执行此操作。有没有人知道如何使这项工作(使用自定义注释),因为我没有在网上找到任何信息?如果可以,请举个例子。
答案 0 :(得分:3)
基本上你需要做的是创建一个鉴别器注释并与Producer一起使用它。这使您可以在Java EE应用程序中的其他bean中简单地@Inject您的实体管理器。这是一个例子:
@Qualifier
@Retention(RUNTIME)
@Target(METHOD, FIELD, PARAMETER, TYPE)
public interface @MyEm {
}
public class EntityProducer {
@PersistenceContext(unitName = 'MyPU', type = PersistenceContextType.EXTENDED)
private EntityManager entityManager;
@Produces
@MyEm
public EntityManager getEntityManager() {
return entityManager;
}
}
public class MyDAO {
@Inject
@MyEm
private EntityManager entityManager;
}
答案 1 :(得分:2)
这被称为“限定词”。每个CDI教程都应该解释它们。简而言之:
@Qualifier