一尘不染

使用EntityManager从EJB访问Hibernate会话

hibernate

是否可以从EntityManager中获取Hibernate Session对象?我想访问一些hibernate特定的API …

我已经尝试过类似的东西:

org.hibernate.Session hSession =
   ( (EntityManagerImpl) em.getDelegate() ).getSession();

但是,一旦我在EJB中调用方法,我就会收到带有NullPointerException的“在EJB上调用期间发生系统异常”

我用玻璃鱼3.0.1


阅读 234

收藏
2020-06-20

共1个答案

一尘不染

Bozho和partenon是正确的,但是:

在JPA
2中,首选机制是entityManager.unwrap(class)

HibernateEntityManager hem = em.unwrap(HibernateEntityManager.class);
Session session = hem.getSession();

我认为您的异常是由于您试图转换为实现类(也许您正在处理JDK代理)而引起的。强制转换为接口,一切都应该正常(在JPA 2版本中,不需要强制转换)。

2020-06-20