-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3921742
By: raulraja
Does the new Hibernate support work when using Spring's HibernateTemplate and the spring wrappers for hibernate?
I have my hibernate code and DAO's with spring and I have the LazyInitializationProblem because of zk's use of threads.
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3921748
By: tomyeh
Henri is working on this. It might take another one or two days.
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3921755
By: raulraja
Thank you, when available, is this support for Hibernate+Spring goint to be announced somewhere?
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3922970
By: henrichen
It should be available on next Freshly version. I will reply here too when available.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3923041
By: raulraja
Thank you
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3928174
By: henrichen
Since ZK version 2006/9/21 Freshly. Please add following listener in your application's WEB-INF/zk.xml and you can use Spring's OpenSessionInViewFilter(or
Interceptor) as usual.
It bridge the ThreadLocal resources to event thread automatically so now the ThreadLocal pattern should works.
<listener>
<description>Spring TransactionSynchronizationManager handler</description> <listener-class>org.zkoss.zkplus.spring.SpringTransactionSynchronizationListene
r</listener-class>
</listener>
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3937915
By: raulraja
Hello,
I have tried adding that and I still get the Lazy Initialization.
Is HibernateDAOSupport supported by this pattern? Could you provide an example of what should I add on my Spring config file and web.xml and a basic DAO implementation?
I would like not to use the ThreadLocal pattern if possible but use the HibernateDAOSupport instead.
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3938520
By: henrichen
There is other reason that might cause LazyInitializationException. e.g. A "detached"
DAO calling data access method(save(), update() ...)
Can you give specific Exception message?
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3938521
By: henrichen
HibernateDAOSupport + getHibernateTemplate() is supported by this ZK listener.
And all you have to do is config it in zk.xml.
/henri
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3938944
By: raulraja
Hello here are my files and the exception being thrown.
DAO
public class PersistenceServiceImpl extends HibernateDaoSupport implements PersistenceService {
public void save(Object o) {
getHibernateTemplate().saveOrUpdate(o);
}
public Object load(Class clazz, Serializable id) {
return getHibernateTemplate().get(clazz,id);
}
public Collection loadAll(Class clazz) {
return getHibernateTemplate().loadAll(clazz);
}
public void remove(Object o) {
getHibernateTemplate().delete(o);
}
}
WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
PortalAdmin</display-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</l
istener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:applicationContext.xml
classpath:acegi-security.xml
</param-value>
</context-param>
<!-- //// -->
<!-- ZK -->
<listener>
<description>Hibernate Open Session In View lifecycle</description>
<listener-class>org.zkoss.zkplus.hibernate.OpenSessionInViewListener</li
stener-class>
</listener>
<listener>
<description>Hibernate thread session context handler</description>
<listener-class>org.zkoss.zkplus.hibernate.HibernateSessionContextListener</li
stener-class>
</listener>
<listener>
<description>Spring TransactionSynchronizationManager handler</description>
<listener-class>org.zkoss.zkplus.spring.SpringTransactionSynchronizationListen
er</listener-class>
</listener>
<listener>
<description>Used to cleanup when a session is destroyed</description>
<display-name>ZK Session Cleaner</display-name>
<listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class>
</listener>
<servlet>
<description>ZK loader for ZUML pages</description>
<servlet-name>zkLoader</servlet-name>
<servlet-class>org.zkoss.zk.ui.http.DHtmlLayoutServlet</servlet-class>
<init-param>
<param-name>update-uri</param-name>
<param-value>/zkau</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zul</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>*.zhtml</url-pattern>
</servlet-mapping>
<servlet>
<description>The asynchronous update engine for ZK</description>
<servlet-name>auEngine</servlet-name>
<servlet-class>org.zkoss.zk.au.http.DHtmlUpdateServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>auEngine</servlet-name>
<url-pattern>/zkau/*</url-pattern>
</servlet-mapping>
<!-- //// -->
<!-- /// -->
<!-- DSP -->
<servlet>
<description><![CDATA[
The servlet loads the DSP pages.
]]></description>
<servlet-name>dspLoader</servlet-name>
<servlet-class>com.potix.web.servlet.dsp.InterpreterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dspLoader</servlet-name>
<url-pattern>*.dsp</url-pattern>
</servlet-mapping>
<!-- /// -->
</web-app>
EXCEPTION
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.zonadental.modelo.Menu.children, no session or session was closed
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationEx
ception(AbstractPersistentCollection.java:358)
org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationEx
ceptionIfNotConnected(AbstractPersistentCollection.java:350)
org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersis
tentCollection.java:343)
org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCo
llection.java:86)
org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:138)
org.zkoss.zk.ui.util.impl.ForEachImpl.prepare(ForEachImpl.java:197)
org.zkoss.zk.ui.util.impl.ForEachImpl.next(ForEachImpl.java:143)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:323)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.createComponents(UiEngineImpl.java:407)
org.zkoss.zk.ui.impl.AbstractExecution.createComponents(AbstractExecution.java:
188)
org.zkoss.zk.ui.HtmlMacroComponent.postCreate(HtmlMacroComponent.java:56)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:364)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:366)
org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:318)
org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:243)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.process(DHtmlLayoutServlet.java:149)
org.zkoss.zk.ui.http.DHtmlLayoutServlet.doGet(DHtmlLayoutServlet.java:105)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Thanks for your help. I really appreciate it.
Orignial message at:
https://sourceforge.net/forum/message.php?msg_id=3939050
By: henrichen
1. The following listeners are ZK listners and should be configured in WEB-INF/zk.xml (NOT web.xml).
<listener>
<description>Hibernate Open Session In View lifecycle</description> <listener-class>org.zkoss.zkplus.hibernate.OpenSessionInViewListener</listener-class>
</listener>
<listener>
<description>Hibernate thread session context handler</description> <listener-class>org.zkoss.zkplus.hibernate.HibernateSessionContextListener</list
ener-class>
</listener>
<listener>
<description>Spring TransactionSynchronizationManager handler</description> <listener-class>org.zkoss.zkplus.spring.SpringTransactionSynchronizationListener
</listener-class>
</listener>
2. The OpenSessionInViewListener and HibernateSessionContextListener are to be used with Hibernate factory.getCurrentSession() pattern only (WITHOUT Spring).
3. If you use Spring + Hibernate, just configure the following in WEB-INF/zk.xml (again, NOT web.xml) is enough.
zk.xml
----------
<zk>
<listener>
<description>Spring TransactionSynchronizationManager handler</description>
<listener-class>org.zkoss.zkplus.spring.SpringTransactionSynchronizationList
ener</listener-class>
</listener>
</zk>
Asked: 2006-09-19 13:10:33 +0800
Seen: 746 times
Last updated: Oct 10 '06