Мне нужна конкретная функция спящего режима, которая является StatelessSession, и для этого мне нужно Hibernate SessionFactory. Проблема в том, что у меня есть только entityManagerFactory. Как я могу получить StatelessSession в этом сценарии?
Получить Hibernate SessionFactory из JPA entityManagerFactory
Ответ 1
Я решил это, введя его, указав этот компонент как http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html#orm-session-factory-setup
Ответ 2
Вариант 1 через EntityManagerFactory
Если вы используете Hibernate >= 4.3
и JPA 2.1
вы можете передать SessionFactory
из EntityManagerFactory
через <T> T EntityManagarFactory#unwrap(Class<T> cls)
.
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
Вариант 2 через EntityManager
Если вы используете Hibernate >= 4.3
и JPA >= 2.0
вы можете перехватить Session
из EntityManager
через <T> T EntityManagar#unwrap(Class<T> cls)
. С Session
вы можете получить SessionFactory
.
Session session = entityManager.unwrap(Session.class);
SessionFactory sessionFactory = session.getSessionFactory();
Ответ 3
Попробуйте EntityManagerFactory
в HibernateEntityManagerFactory
.
Поскольку EntityManagerFactory
не поддерживает unwrap()
(в отличие от EntityManager
), это, по-видимому, единственный способ достичь вашей цели.
Ответ 4
Hibernate> = 4.3 поддерживает JPA 2.1. Таким образом, вы можете использовать EntityManagerFactory.unwrap, например emf.unwrap(SessionFactory.class).