如何在不使用注释的情况下在JavaEE 6中获得容器管理实体管理器
发布于 2015-09-08 15:49:39
您可以尝试使用JNDI获取实体管理器,如下所述:http://docs.oracle.com/cd/E16439_01/doc.1013/e13981/usclient005.htm#CIHFIDHI
另外,请参阅JPA spec的第7.2节(“获取EntityManager")。
发布于 2015-09-08 22:32:36
我找到了这个在Glassfish 3.1上工作的解决方案(感谢Thomas的链接):
@Stateless
@PersistenceContext(unitName = "myUnit", name="persistence/myUnit")
public class MyLibraryService {
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public String getFirstName(String userId) {
EntityManager em = (EntityManager) new InitialContext().lookup("java:comp/env/persistence/myUnit");
TypedQuery<String> tq = em.createQuery("select fn from Person p where p.id = :userId", String.class);
tq.setParameter("userId", userId);
...
}
}其中,myUnit是在persistence.xml中定义的设备名称。
MyLibraryService可以简单地注入到其他类中:
@Inject
private MyLibraryService myLibraryService;https://stackoverflow.com/questions/32451981
复制相似问题