2013-09-26 10 views
13

मुझे स्टेटलेस सत्र की हाइबरनेट की एक विशिष्ट विशेषता की आवश्यकता है और इसके लिए मुझे हाइबरनेट के सत्र कारखाने की आवश्यकता है। समस्या यह है कि मेरे पास केवल इकाई प्रबंधक है। इस परिदृश्य में मैं स्टेटलेस सत्र कैसे प्राप्त कर सकता हूं?जेपीए की इकाई से हाइबरनेट सत्र प्राप्त करें मैनेजर फैक्टरी

उत्तर

8

EntityManagerFactory से HibernateEntityManagerFactory पर कास्ट करने का प्रयास करें।

EntityManagerFactory के बाद से समर्थन नहीं करता unwrap() (EntityManager के विपरीत), यह एक ही तरीका है अपने लक्ष्य को प्राप्त करने लगती है।

+0

काम नहीं किया, classCastException – ibrabeicker

+1

मेरे लिए ठीक काम किया: HibernateEntityManagerFactory emFactory = (HibernateEntityManagerFactory) em.getEntityManagerFactory(); – Tvaroh

7

हाइबरनेट> = 4.3 की तरह सेम को परिभाषित करने जेपीए 2.1 का समर्थन करता है। तो आप वहाँ emm.unwrap (सत्र Factory.class) की तरह EntityManagerFactory.unwrap का उपयोग कर सकते हैं।

+1

एक और समाधान EntityManager को सत्र में खोलना है और फिर सत्र से सत्र प्रबंधक प्राप्त करना है। यह जेपीए 2.0 में भी काम करता है –

16

के माध्यम से EntityManagerFactory

विकल्प 1 आप Hibernate >= 4.3 का उपयोग करें और JPA 2.1 यदि आप <T> T EntityManagarFactory#unwrap(Class<T> cls) के माध्यम से एक EntityManagerFactory से SessionFactory accces कर सकते हैं।

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

विकल्प 2 के माध्यम से EntityManager

आप Hibernate >= 4.3 का उपयोग करते हैं और JPA >= 2.0 तो आप <T> T EntityManagar#unwrap(Class<T> cls) के माध्यम से एक EntityManager से SessionFactory accces कर सकते हैं।

Session session = entityManager.unwrap(Session.class); 
SessionFactory sessionFactory = session.getSessionFactory(); 
संबंधित मुद्दे