Inventory.hbm.xml: N的一方
   <class name="com.flsoft.module.Inventory" table="Inventory" schema="dbo" catalog="UFDATA_789_2010">
        <id name="cinvCode" type="java.lang.String">
            <column name="cInvCode" length="20" />
            <generator class="native"></generator>
        </id>
        <!--  inventoryClass   -->
       <many-to-one name="inventoryClass" class="com.flsoft.module.InventoryClass" fetch="select" lazy="false">
            <column name="cInvCCode" length="12" />
        </many-to-one>
        
InventoryClass.hbm.xml : 1的一方
    <class name="com.flsoft.module.InventoryClass" table="InventoryClass" schema="dbo" catalog="UFDATA_789_2010">
        <id name="cinvCcode" type="java.lang.String">
            <column name="cInvCCode" length="12" />
            <generator class="native"></generator>
        </id>
         <set name="inventories" inverse="true">
            <key>
                <column name="cInvCCode" length="12" />
            </key>
            <one-to-many class="com.flsoft.module.Inventory" />
        </set>
many-to-one 设置lazy="false"了,并且升级到cgli-2.2了
报错信息如下:[ERROR] [org.hibernate.LazyInitializationException.<init>(LazyInitializationException.java:19)] nException - failed to lazily initialize a collection of role: com.flsoft.module.InventoryClass.inventories, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.flsoft.module.InventoryClass.inventories, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:138)
at org.codehaus.xfire.aegis.type.collection.CollectionType.writeObject(CollectionType.java:95)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:392)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:392)
at org.codehaus.xfire.aegis.type.basic.ArrayType.writeValue(ArrayType.java:298)
at org.codehaus.xfire.aegis.type.collection.CollectionType.writeObject(CollectionType.java:103)
at org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:229)
at org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:240)
at org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
at org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:81)
at org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:111)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaServlet(HttpChannel.java:97)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:62)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:274)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:85)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:60)
at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:287)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:146)
at org.codehaus.xfire.spring.remoting.XFireServletControllerAdapter.handleRequest(XFireServletControllerAdapter.java:63)
at org.codehaus.xfire.spring.remoting.XFireExporter.handleRequest(XFireExporter.java:44)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
[DEBUG] [org.codehaus.xfire.handler.DefaultFaultHandler.invoke(DefaultFaultHandler.java:34)] ultHandler - Fault occurred!

解决方案 »

  1.   

    org.codehaus.xfire.fault.XFireFault: failed to lazily initialize a collection of role: com.flsoft.module.InventoryClass.inventories, no session or session was closed
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:278)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:85)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.execute(ServiceInvocationHandler.java:132)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(ServiceInvocationHandler.java:107)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
    at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoint.java:60)
    at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.java:38)
    at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFireServletController.java:287)
    at org.codehaus.xfire.transport.http.XFireServletController.doService(XFireServletController.java:146)
    at org.codehaus.xfire.spring.remoting.XFireServletControllerAdapter.handleRequest(XFireServletControllerAdapter.java:63)
    at org.codehaus.xfire.spring.remoting.XFireExporter.handleRequest(XFireExporter.java:44)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.flsoft.module.InventoryClass.inventories, no session or session was closed
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:358)
    at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:350)
    at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:343)
    at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
    at org.hibernate.collection.PersistentSet.iterator(PersistentSet.java:138)
    at org.codehaus.xfire.aegis.type.collection.CollectionType.writeObject(CollectionType.java:95)
    at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:392)
    at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:392)
    at org.codehaus.xfire.aegis.type.basic.ArrayType.writeValue(ArrayType.java:298)
    at org.codehaus.xfire.aegis.type.collection.CollectionType.writeObject(CollectionType.java:103)
    at org.codehaus.xfire.aegis.AegisBindingProvider.writeParameter(AegisBindingProvider.java:229)
    at org.codehaus.xfire.service.binding.AbstractBinding.writeParameter(AbstractBinding.java:240)
    at org.codehaus.xfire.service.binding.WrappedBinding.writeMessage(WrappedBinding.java:89)
    at org.codehaus.xfire.soap.SoapSerializer.writeMessage(SoapSerializer.java:81)
    at org.codehaus.xfire.transport.http.HttpChannel.writeWithoutAttachments(HttpChannel.java:111)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaServlet(HttpChannel.java:97)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:62)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:98)
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:274)
    ... 29 more有表关联时该怎么设置?lazy=false 是在查询时hibernate会把与之关联的表都查出来吗?高手帮忙指点一下.. 谢谢!!
      

  2.   

    <set name="inventories" lazy="true" inverse="true">
                <key>
                    <column name="cInvCCode" length="12" />
                </key>
                <one-to-many class="com.flsoft.module.Inventory" />
            </set>
      

  3.   

    WEB项目的话使用opensessioninviewfilter技术