मुझे LazyInitializationException के साथ कोई समस्या है भले ही मैं openSessionInViewInterceptor का उपयोग कर रहा हूं। मैंने उस विषय के बारे में इतनी सारी पोस्ट पढ़ी हैं और मैंने इसके लिए तीन या चार अलग-अलग दृष्टिकोणों की कोशिश की है।LazyInitializationException हालांकि OpenSessionInViewInterceptor
पहली बात यह है कि मैं हाइबरनेट कॉन्फ़िगरेशन फ़ाइल में आलसी विशेषता को झूठा सेट नहीं करना चाहता हूं। तो, मैं उस समस्या का वास्तविक समाधान चाहता हूं। मैं स्प्रिंग 2.5, हाइबरनेट 3, नेटबीन्स और टोमकैट का उपयोग कर रहा हूं।
servlet.xml
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptor" />
</list>
</property>
<property name="mappings">
<props>
<prop key="/index.htm">indexController</prop>
</props>
</property>
</bean>
<bean id ="openSessionInViewInterceptor" name="openSessionInViewInterceptor"
class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
applicationContext.xml
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<property name="mappingResources">
<list>
<value>TasquesDAOHibernate/Model/Tasca.hbm.xml</value>
<value>TasquesDAOHibernate/Model/TipusTasca.hbm.xml</value>
<value>TasquesDAOHibernate/Model/Prioritat.hbm.xml</value>
<value>TasquesDAOHibernate/Model/Persona.hbm.xml</value>
<value>TasquesDAOHibernate/Model/EstatTasca.hbm.xml</value>
<value>TasquesDAOHibernate/Model/Usuari.hbm.xml</value>
<value>TasquesDAOHibernate/Model/LogActivitat.hbm.xml</value>
<value>TasquesDAOHibernate/Model/ObjecteSIPANUsuari.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.jdbc.batch_size">0</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="tasquesDAO" class="TasquesDAOHibernate.TasquesDAOHibernate">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="tasquesService" name="tasquesService" class="Tasques_www.service.TasquesService" >
<property name="tasquesDAO">
<ref local="tasquesDAO"/>
</property>
<property name="transactionManager" ref="transactionManager"/>
</bean>
TasquesService.java
public List<Tasca> getTasques() {
List<Tasca> tasques = (List)this.transactionTemplate.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
Object tasques = tasquesDAO.getTasques();
return tasques;
}
});
return tasques;
}
TasquesDAOHibernate.ja:
मेरे कार्यान्वयन इस प्रकार है va
public List<Tasca> getTasques() {
Session session = this.sessionFactory.getCurrentSession();
try{
Query query = session.createQuery("SELECT element FROM Tasca AS element");
List result = query.list();
return result;
}catch(HibernateException ex){
return null;
}
}
मुझे लगता है कि ये महत्वपूर्ण फाइलें हैं। मैं चीजों की बहुत सारी की कोशिश की है और मैं हमेशा LazyInitializationException या
org.hibernate.HibernateException हो रही है: नहीं हाइबरनेट सत्र थ्रेड के लिए बाध्य है, और विन्यास गैर लेन-देन यहां के निर्माण की अनुमति नहीं है ...
मुझे नहीं पता कि कौन सा सबसे खराब है।
अग्रिम धन्यवाद!
इंडेक्स नियंत्रक के लिए बीन परिभाषा और स्रोत को देखने में मददगार हो सकता है – skaffman