मैं JSF
एप्लिकेशन बना रहा हूं और इसमें कुछ हाइबरनेट सामग्री का उपयोग कर रहा हूं। सभी मैं करना चाहता हूँ डेटाबेस में इकाई को बचाने के लिए है, लेकिन मैं इस अपवाद मिलती रहती है:org.hibernate.HibernateException: सहेजें सक्रिय लेनदेन के बिना मान्य नहीं है
org.hibernate.HibernateException: No CurrentSessionContext configured!
तब मैंने पाया कि मैं जोड़ने की जरूरत: पहले मैं इस अपवाद हो रही थी पर
org.hibernate.HibernateException: save is not valid without active transaction
यह मेरे हाइबरनेट कॉन्फ़िगरेशन में:
<property name="hibernate.current_session_context_class">thread</property>
इस समस्या को हल किया गया लेकिन अब उपर्युक्त दिखाई देता है। मैं इस तरह डेटाबेस में इकाई की बचत कर रहा हूँ:
public void create(T entity) {
getSessionFactory().getCurrentSession().save(entity);
}
मेरे hibernate.cfg.xml फ़ाइल इस तरह दिखता है:
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/online_tests_management</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>
<mapping class="com.groupgti.onlinetests.management.db.Service"/>
</session-factory>
</hibernate-configuration>
मैं उपयोग कर रहा हूँ:
- हाइबरनेट-4.1.4 फाइनल
- जेडीके 1.6
- टॉमकैट 6
- JSF 2.0
- PrimeFaces 3.3.1
- MySql
कोई जानता है, जहां समस्या हो सकती है?
public void create(T entity) {
getSessionFactory().getCurrentSession().beginTransaction();
getSessionFactory().getCurrentSession().save(entity);
getSessionFactory().getCurrentSession().endTransaction();
}
आपकी समस्या का समाधान करना चाहिए:
धन्यवाद, यह काम किया। –
मैं वसंत एओपी के माध्यम से लेनदेन को कॉन्फ़िगर करने के लिए वसंत HibernateTransactionManager का उपयोग कर रहा हूँ। मैं लॉग में देख सकता हूं कि लेनदेन ठीक से शुरू हो रहा है लेकिन मेरी बचत अभी भी विफल रही है क्योंकि मैं उपरोक्त कोड का उपयोग नहीं कर रहा हूं। ऐसा क्यों है? –