Currently, I\'m using PersistenceContext to inject an EntityManager. The EM is injected perfectly.
@Stateless
public StatelessSessionBean implements Stateles
The best practice for persistence context and CDI is to make them CDI bean to avoid these kind of issue.
public class MyProducers {
@Produces
@PersistenceContext(unitName = "MyPersistenceUnit")
private EntityManager em;
}
After that you'll be able to inject the EntityManager
in CDI way. Taking your EJB it'll be :
@Stateless
public StatelessSessionBean implements StatelessSessionBeanLocal {
@Inject
private EntityManager em;
@Override
public Collection getAllObjects(){
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriqQuery query = cb.createQuery(MyObject.class);
query.from(MyObject);
return em.createQuery(query).getResultList();
}
}
This way, you'll be able to decorate your CDI bean with no issue.
If you have multiple EntityManagers
you can use CDI qualifiers to distinguish them