2013-09-26 11 views

Odpowiedz

8

Spróbuj rzucić EntityManagerFactory na HibernateEntityManagerFactory.

Ponieważ EntityManagerFactory nie obsługuje unwrap() (w przeciwieństwie do EntityManager), wydaje się, że jest to jedyny sposób na osiągnięcie celu.

+0

nie działa, ClassCastException – ibrabeicker

+1

pracował dobrze dla mnie: HibernateEntityManagerFactory emFactory = (HibernateEntityManagerFactory) em.getEntityManagerFactory(); – Tvaroh

7

hibernacji> = 4.3 obsługuje JPA 2.1. Możesz więc użyć EntityManagerFactory.unwrap jak emf.unwrap (SessionFactory.class).

+1

Innym rozwiązaniem jest rozwinięcie EntityManager w sesję, a następnie pobranie SessionManagera z sesji. Działa to również w jpa 2.0 –

16

Wariant 1 poprzez EntityManagerFactory

Jeśli używasz Hibernate >= 4.3 i JPA 2.1 można accces się SessionFactory od A EntityManagerFactory przez <T> T EntityManagarFactory#unwrap(Class<T> cls).

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

wariantu 2 poprzez EntityManager

Jeśli używasz Hibernate >= 4.3 i JPA >= 2.0 następnie można accces się SessionFactory od A EntityManager przez <T> T EntityManagar#unwrap(Class<T> cls).

Session session = entityManager.unwrap(Session.class); 
SessionFactory sessionFactory = session.getSessionFactory(); 
Powiązane problemy