Results 1 to 3 of 3

Thread: outer-joins with hibernate

  1. #1
    Join Date
    Jan 2005
    Posts
    2

    Default outer-joins with hibernate

    hi,

    i am using spring together with hibernate. all works fine, but i am stuck with the following problem:

    if i have one-to-one or many-to-one relations, i want to use outer-joins instead of firing a lot of select statements. therefore i declared my classes as proxies for themselves with <class name="..." ... lazy="true">.
    but this doesnt work for me, because of using spring i always get an exception, that the session is already closed.

    i would really appreciate any help.

    thanks in advance
    marco

  2. #2
    Join Date
    Aug 2004
    Location
    Southampton, UK
    Posts
    826

    Default

    Marco,

    Check out the JavaDocs for OpenSessionInViewFilter and OpenSessionInViewInterceptor with which you can bind a Session to the thread for a particular request. Spring will then keep this Session alive for the request allowing for lazy loading to work in the web tier.

    Rob

  3. #3
    Join Date
    Jan 2005
    Posts
    2

    Default

    thanks robh for your help. i applied the opensessioninviewinterceptor, but the exception still remained. i tried it with the servletwrappingcontroller, because i am using hibernate, spring and struts together. below i attach the relevant parts of my applicationContext-hibernate.xml.

    <bean id="transactionManager_"
    class="org.springframework.orm.hibernate.Hibernate TransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory_"/>
    </property>
    </bean>
    <bean id="persistenceService"
    class="org.springframework.aop.framework.ProxyFact oryBean">
    <property name="proxyInterfaces">
    <value>abs.proto2.db.IPersistenceService</value>
    </property>
    <property name="interceptorNames">
    <value>transactionInterceptor_,persistenceTarget </value>
    </property>
    </bean>
    <bean id="transactionInterceptor_"
    class="org.springframework.transaction.interceptor .TransactionInterceptor">
    <property name="transactionManager">
    <ref local="transactionManager_"/>
    </property>
    <property name="transactionAttributeSource">
    <value>abs.proto2.db.IPersistenceService.*=PROPAGA TION_REQUIRED</value>
    </property>
    </bean>
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.Sim pleUrlHandlerMapping">
    <property name="interceptors">
    <list>
    <ref bean="openSessionInViewInterceptor"/>
    </list>
    </property>
    <property name="mappings">
    <props>
    <prop key="*.do">strutsWrappingController</prop>
    </props>
    </property>
    </bean>

    <bean id="strutsWrappingController" class="org.springframework.web.servlet.mvc.Servlet WrappingController">
    <property name="servletClass">
    <value>org.apache.struts.action.ActionServlet</value>
    </property>
    <property name="servletName">
    <value>action</value>
    </property>
    <property name="initParameters">
    <props>
    <prop key="config">/WEB-INF/struts-config.xml</prop>
    </props>
    </property>
    </bean>
    <bean name="openSessionInViewInterceptor"
    class="org.springframework.orm.hibernate.support.O penSessionInViewInterceptor">
    <property name="sessionFactory">
    <ref local="sessionFactory_"/>
    </property>
    </bean>


    [ERROR] 2005-01-11 17:25:25,363 net.sf.hibernate.proxy.LazyInitializer - Line: 63 Exception initializing proxy
    net.sf.hibernate.HibernateException: Could not initialize proxy - the owning Session was closed
    at net.sf.hibernate.proxy.LazyInitializer.initialize( LazyInitializer.java:47)
    at net.sf.hibernate.proxy.LazyInitializer.initializeW rapExceptions(LazyInitializer.java:60)
    at net.sf.hibernate.proxy.LazyInitializer.getImplemen tation(LazyInitializer.java:164)
    at net.sf.hibernate.proxy.CGLIBLazyInitializer.interc ept(CGLIBLazyInitializer.java:108)
    at abs.proto2.beans.Eingabe$$EnhancerByCGLIB$$b02bc83 4.getStatus(<generated>)
    at abs.proto2.actions.FormSbAction.execute(FormSbActi on.java:104)
    at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:421)
    at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:226)
    at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1164)
    at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:397)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invo keInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(Cont ainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(Co yoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(P oolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    [FATAL] 2005-01-11 17:25:25,394 org.apache.struts.action.ExceptionHandler - Line: 31 Exception wurde verursacht:
    net.sf.hibernate.LazyInitializationException: Exception initializing proxy: [abs.proto2.beans.Eingabe#16016]
    at net.sf.hibernate.proxy.LazyInitializer.initializeW rapExceptions(LazyInitializer.java:64)
    at net.sf.hibernate.proxy.LazyInitializer.getImplemen tation(LazyInitializer.java:164)
    at net.sf.hibernate.proxy.CGLIBLazyInitializer.interc ept(CGLIBLazyInitializer.java:108)
    at abs.proto2.beans.Eingabe$$EnhancerByCGLIB$$b02bc83 4.getStatus(<generated>)
    at abs.proto2.actions.FormSbAction.execute(FormSbActi on.java:104)
    at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:421)
    at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:226)
    at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1164)
    at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:397)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
    at javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
    at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:237)
    at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:157)
    at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:214)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardContextValve.invo keInternal(StandardContextValve.java:198)
    at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:152)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:137)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:102)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:109)
    at org.apache.catalina.core.StandardValveContext.invo keNext(StandardValveContext.java:104)
    at org.apache.catalina.core.StandardPipeline.invoke(S tandardPipeline.java:520)
    at org.apache.catalina.core.ContainerBase.invoke(Cont ainerBase.java:929)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(Co yoteAdapter.java:160)
    at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:799)
    at org.apache.coyote.http11.Http11Protocol$Http11Conn ectionHandler.processConnection(Http11Protocol.jav a:705)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(P oolTcpEndpoint.java:577)
    at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    Caused by: net.sf.hibernate.HibernateException: Could not initialize proxy - the owning Session was closed
    at net.sf.hibernate.proxy.LazyInitializer.initialize( LazyInitializer.java:47)
    at net.sf.hibernate.proxy.LazyInitializer.initializeW rapExceptions(LazyInitializer.java:60)
    ... 34 more

Similar Threads

  1. Loosing my SecureContext
    By sklakken in forum Security
    Replies: 3
    Last Post: Jul 21st, 2005, 01:44 PM
  2. hibernate trouble on one-to-one error
    By creatxr in forum Data
    Replies: 3
    Last Post: Apr 1st, 2005, 12:22 AM
  3. Replies: 3
    Last Post: Nov 19th, 2004, 07:16 PM
  4. Replies: 8
    Last Post: Sep 23rd, 2004, 01:12 AM
  5. Replies: 7
    Last Post: Aug 21st, 2004, 03:42 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •