2013-09-26 12 views

Antwort

8

Versuchen Sie, EntityManagerFactory zu HibernateEntityManagerFactory zu werfen.

Da EntityManagerFactoryunwrap() nicht unterstützt (im Gegensatz zu EntityManager), scheint es der einzige Weg zu sein, um Ihr Ziel zu erreichen.

+0

nicht funktionierte, Classcast – ibrabeicker

+1

gut für mich gearbeitet: HibernateEntityManagerFactory emFactory = (HibernateEntityManagerFactory) em.getEntityManagerFactory(); – Tvaroh

7

Hibernate> = 4.3 unterstützt JPA 2.1. Sie können also EntityManagerFactory.unwrap wie emf.unwrap (SessionFactory.class) dort verwenden.

+1

Eine andere Lösung besteht darin, den EntityManager in eine Sitzung zu entpacken und dann den SessionManager aus der Sitzung zu holen. Dies funktioniert auch in jpa 2.0 –

16

Option 1 durch EntityManagerFactory

Wenn Sie Hibernate >= 4.3 verwenden und JPA 2.1 Sie die SessionFactory von einem EntityManagerFactory durch <T> T EntityManagarFactory#unwrap(Class<T> cls) accces können.

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

Option 2 durch EntityManager

Wenn Sie Hibernate >= 4.3 und JPA >= 2.0 dann verwenden können Sie die SessionFactory von einem EntityManager durch <T> T EntityManagar#unwrap(Class<T> cls) accces.

Session session = entityManager.unwrap(Session.class); 
SessionFactory sessionFactory = session.getSessionFactory(); 
Verwandte Themen