持久性上下文和CDI的最佳实践是使它们成为CDI bean以避免此类问题。
public class MyProducers { @Produces @PersistenceContext(unitName = "MyPersistenceUnit") private EntityManager em;}之后,您将能够以
EntityManagerCDI方式注入。使用您的EJB将会是:
@Statelesspublic StatelessSessionBean implements StatelessSessionBeanLocal { @Inject private EntityManager em; @Override public Collection<MyObject> getAllObjects(){ CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriqQuery<MyObject> query = cb.createQuery(MyObject.class); query.from(MyObject); return em.createQuery(query).getResultList(); }}这样,您就可以毫无问题地装饰CDI bean。
如果您有多个
EntityManagers,则可以使用CDI限定词来区分它们



