2013-09-26 42 views

回答

8

试着将EntityManagerFactory转换为HibernateEntityManagerFactory

由于EntityManagerFactory不支持unwrap()(与EntityManager不同),它似乎是实现目标的唯一方法。

+0

没有工作,ClassCastException异常 – ibrabeicker

+1

工作的罚款对我来说:HibernateEntityManagerFactory emFactory =(HibernateEntityManagerFactory)em.getEntityManagerFactory(); – Tvaroh

7

休眠> = 4.3的豆支持JPA 2.1。所以你可以使用EntityManagerFactory.unwrap像emf.unwrap(SessionFactory.class)那里。

+1

另一种解决方案是将EntityManager解包到会话中,然后从会话中获取SessionManager。这也适用于jpa 2.0 –

16

选择1到EntityManagerFactory

如果使用Hibernate >= 4.3JPA 2.1您可以通过<T> T EntityManagarFactory#unwrap(Class<T> cls) accces从EntityManagerFactorySessionFactory

SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class); 

选项2通过EntityManager

如果使用Hibernate >= 4.3JPA >= 2.0,那么你可以通过<T> T EntityManagar#unwrap(Class<T> cls) accces从EntityManagerSessionFactory

Session session = entityManager.unwrap(Session.class); 
SessionFactory sessionFactory = session.getSessionFactory(); 
相关问题