如何从实例化的EJBContainer(OpenEJB)获取EntityManager?
我尝试使用@PersistenceContext
注释,但它不起作用。
答案 0 :(得分:1)
是的,因为您没有在EJB容器中运行单元测试。所以要么你必须嘲笑EntityManager
(例如用Mockito)或者我建议你使用Arquillian,这将允许在reall容器中运行你的测试(它可以在某个服务器上运行,或者你可以在测试中自己开始。)
有关测试JPA的指南页面上有一个很好的教程,请查看它:) Testing Java Persistence
答案 1 :(得分:0)
我不确定您的问题是否与单元测试相关,但这对我有用:
(测试)包中的“帮助bean”:
@Stateless
public class EntityManagerProvider {
@PersistenceContext(unitName = "pu-name")
private EntityManager entityManager;
public EntityManager getEntityManager() {
return entityManager;
}
}
然后使用EJBContainer
查找该bean并获取EntityManager
:
private EntityManager getEntityManager() throws NamingException {
final EntityManagerProvider provider = (EntityManagerProvider)ejbContainer.getContext()
.lookup("java:global/testproject/EntityManagerProvider");
return provider.getEntityManager();
}