hibernate - how - no persistence provider for entitymanager named
Obtenga Hibernate SessionFactory de entityManagerFactory de JPA (4)
Necesito una característica específica de hibernate que es StatelessSession y para eso necesito SessionFactory de Hibernate. El problema es que solo tengo el entityManagerFactory. ¿Cómo puedo obtener una StatelessSession en este escenario?
Hibernate> = 4.3 soporta JPA 2.1. Así que puedes usar EntityManagerFactory.unwrap como emf.unwrap (SessionFactory.class) allí.
Intente convertir EntityManagerFactory
en HibernateEntityManagerFactory
.
Dado que EntityManagerFactory
no admite unwrap()
(a diferencia de EntityManager
), parece ser la única forma de lograr su objetivo.
Lo resolví inyectándolo, definiendo el bean como este http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html#orm-session-factory-setup
Opción 1 a través de EntityManagerFactory
Si usa Hibernate >= 4.3
y JPA 2.1
, puede acceder al SessionFactory
desde un EntityManagerFactory
hasta <T> T EntityManagarFactory#unwrap(Class<T> cls)
.
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
Opción 2 a través de EntityManager
Si usa Hibernate >= 4.3
y JPA >= 2.0
, puede acceder a la Session
desde EntityManager
través de <T> T EntityManagar#unwrap(Class<T> cls)
. Desde la Session
puede obtener la SessionFactory
.
Session session = entityManager.unwrap(Session.class);
SessionFactory sessionFactory = session.getSessionFactory();