是否可以从 EntityManager 获取 Hibernate Session 对象?我想访问一些特定于 hibernate 的 API...
我已经尝试过类似的方法:
org.hibernate.Session hSession =
( (EntityManagerImpl) em.getDelegate() ).getSession();
但只要我在 EJB 中调用一个方法,我就会得到“在 EJB 上调用期间发生系统异常”并带有 NullPointerException
我使用 glassfish 3.0.1
最佳答案
在 JPA 2 中,首选机制是 entityManager.unwrap(class)
HibernateEntityManager hem = em.unwrap(HibernateEntityManager.class);
Session session = hem.getSession();
我认为你的异常是因为你试图转换为一个实现类(也许你正在处理一个 JDK 代理)。转换为接口(interface),一切都应该没问题(在 JPA 2 版本中,不需要转换)。
关于java - 使用 EntityManager 从 EJB 访问 Hibernate Session,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4335570/