How to inject EntityManager in CDI (weld)?

南楼画角 提交于 2019-11-30 08:49:02

The appropriate way to inject a Persistent Context into a managed Bean is the following:

@PersistenceContext(unitName = "my-pu-name")
private EntityManager em;

Note that this can only be done on managed beans, ie, beans that are created/destroyed by the container.

A best practice is to add this as as a producer, so that you can just use @Inject into your managed beans:

@ApplicationScoped
public class ApplicationResources {
    @Produces
    @PersistenceContext(unitName = "my-pu-name")
    private EntityManager em;
}

Then, you can inject it in JAX-RS endpoints, EJBs and any other bean that is managed by the container:

@Stateless
public class FooService {
    @Inject
    EntityManager em;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!