我需要一个特殊的hibernate特性,即StatelessSession,为此我需要Hibernate的SessionFactory.问题是我只有entityManagerFactory.如何在这种情况下获得StatelessSession?
Pau*_*ski 32
选项1到 EntityManagerFactory
如果你使用Hibernate >= 4.3,JPA 2.1你可以SessionFactory从一个EntityManagerFactory通过<T> T EntityManagarFactory#unwrap(Class<T> cls).
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
Run Code Online (Sandbox Code Playgroud)
选项2到 EntityManager
如果你使用Hibernate >= 4.3和JPA >= 2.0那么你就可以accces了Session从EntityManager通过<T> T EntityManagar#unwrap(Class<T> cls).从Session你可以获得SessionFactory.
Session session = entityManager.unwrap(Session.class);
SessionFactory sessionFactory = session.getSessionFactory();
Run Code Online (Sandbox Code Playgroud)
试着投EntityManagerFactory来HibernateEntityManagerFactory.
既然EntityManagerFactory不支持unwrap()(不像EntityManager),它似乎是实现目标的唯一途径.
Hibernate> = 4.3支持JPA 2.1.所以你可以在那里使用像emf.unwrap(SessionFactory.class)这样的EntityManagerFactory.unwrap.