java - 使用 EntityManager 从 EJB 访问 Hibernate Session

标签 java hibernate jpa jakarta-ee glassfish-3

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

我已经尝试过类似的方法:

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

但只要我在 EJB 中调用一个方法,我就会得到“在 EJB 上调用期间发生系统异常”并带有 NullPointerException

我使用 glassfish 3.0.1

最佳答案

Bozhopartenon是正确的,但是:

在 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/

相关文章:

java - 使用 eclipse 在 java 中使用 windows 应用程序

java - 在 QueryDSL 中使用相同的 q-object 时对象已被使用

java - DAO 方法应该调用同一类中的另一个方法还是应该由服务层执行?

hibernate - hibernate 列表与4个表不同

spring - 相当于 spring-data-jpa 中的标准

java - 基于 Hibernate 注解的查询执行错误?

java - 在 JSON 中查找深度嵌套的键/值

java - 将 String 输入转换为 Double 并避免 java.lang.NumberFormatException

Java:将 String 转换为 long 时遇到问题

java - 具有继承性的实体的 JPA native 查询