Apache flex 弹簧&x2B;jstl&x2B;hibernate惰性初始化异常,如何在flex前端工作
我正在开发一个特殊的应用程序,一个spring+hibernate设置。我在flex中有一个前端,现在我尝试添加一个jstl前端。我得到的延迟初始化异常是当我尝试从jstl模型和视图控制器调用一个方法时,我从我的flex fronend调用它,没有任何问题 这是我的web.xml:Apache flex 弹簧&x2B;jstl&x2B;hibernate惰性初始化异常,如何在flex前端工作,apache-flex,hibernate,spring,intellij-idea,jstl,Apache Flex,Hibernate,Spring,Intellij Idea,Jstl,我正在开发一个特殊的应用程序,一个spring+hibernate设置。我在flex中有一个前端,现在我尝试添加一个jstl前端。我得到的延迟初始化异常是当我尝试从jstl模型和视图控制器调用一个方法时,我从我的flex fronend调用它,没有任何问题 这是我的web.xml: <?xml version="1.0" encoding="UTF-8"?> 没问题,我会得到用户列表并打印出来。但是,如果我试着在一个更复杂的对象上做这件事,它与自身和东西有关系,比如对象类别: Li
<?xml version="1.0" encoding="UTF-8"?>
没问题,我会得到用户列表并打印出来。但是,如果我试着在一个更复杂的对象上做这件事,它与自身和东西有关系,比如对象类别:
List categories = catalogFacadeImpl.getCategoryList();
我得到一个例外:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.bamboo.catW3.domain.Category.categories, no session or session was closed
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
这通常是hbm和关系配置方式的问题,然而,情况并非如此,因为从flex中我调用了完全相同的方法,没有任何问题。所以我想我并没有像以前那样分享豆子。这也不会给我这个错误
我现在真的很困惑,任何关于去哪里找的建议都将不胜感激。非常感谢,为了以防万一,我试着发布了hbm,但我渴望这篇文章。我没有读完整的问题,但是对于远程前端的
LazyInitializationException
的解决方案是在通过网络发送集合之前初始化集合。因此,要么:
- 将所有集合定义为
EAGER
- 调用休眠。在发送之前初始化(..)
有关更多信息,请参阅和。它们是相关的,尽管后者是关于GWT的。我没有阅读整个问题,但是对于远程前端的
LazyInitializationException
的解决方案是在通过网络发送集合之前初始化集合。因此,要么:
- 将所有集合定义为
EAGER
- 调用休眠。在发送之前初始化(..)
有关更多信息,请参阅和。它们是相关的,尽管后者与GWT有关。尝试将
@Transactional
添加到您的服务方法。尝试将@Transactional
添加到您的服务方法。考虑将此问题向下编辑。这么长时间的问题往往不会被阅读。我们会记住,在未来,这个问题得到了回答,但是没有完全阅读。感谢您考虑将此问题向下编辑。这么长时间的问题往往不会被阅读。我们会记住,在未来,这个问题得到了回答,但是没有完全阅读。谢谢你好,波佐,多亏了你的帖子,我才得以工作,万分感谢你的帮助!!你提出的两个解决方案中有任何一个都没有通过,甚至没有尝试过,因为在阅读第二个答案时,它建议尝试一个名为OpenSessionInViewFilter的过滤器,它解决了我的问题,尽管我不知道它是如何做到的!以及为什么flex前端在过去不需要这个过滤器。再见!你好,波佐,多亏了你的帖子,我才得以工作,万分感谢你的帮助!!你提出的两个解决方案中有任何一个都没有通过,甚至没有尝试过,因为在阅读第二个答案时,它建议尝试一个名为OpenSessionInViewFilter的过滤器,它解决了我的问题,尽管我不知道它是如何做到的!以及为什么flex前端在过去不需要这个过滤器。再见!
<!-- ========================= GENERAL DEFINITIONS ========================= -->
<!-- ========================= DATA ACCESS OBJECT DEFINITIONS ======================== -->
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/catWDB</value>
</property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"><ref local="dataSource"/></property>
<property name="mappingResources">
<list>
<value>/com/bamboo/catW3/catW3.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.connection.pool_size">3</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" lazy-init="true" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="categoryDAOTarget" class="com.bamboo.catW3.DAO.impl.CategoryDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="containerDAOTarget" class="com.bamboo.catW3.DAO.impl.ContainerDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="productDAOTarget" class="com.bamboo.catW3.DAO.impl.ProductDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="productOptionDAOTarget" class="com.bamboo.catW3.DAO.impl.ProductOptionDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="productStatusDAOTarget" class="com.bamboo.catW3.DAO.impl.ProductStatusDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="userDAOTarget" class="com.bamboo.catW3.DAO.impl.UserDAOImpl">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
<bean id="velocityEngine" class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
<property name="velocityProperties">
<value>
resource.loader=class
class.resource.loader.class=org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
</value>
</property>
</bean>
<!-- ========================= BUSINESS OBJECT DEFINITIONS ======================== -->
<bean id="catalogFacadeTarget" class="com.bamboo.catW3.business.impl.CatalogFacadeImpl">
<property name="categoryDAO"><ref local="categoryDAOTarget"/></property>
<property name="containerDAO"><ref local="containerDAOTarget"/></property>
<property name="productDAO"><ref local="productDAOTarget"/></property>
<property name="productOptionDAO"><ref local="productOptionDAOTarget"/></property>
<property name="productStatusDAO"><ref local="productStatusDAOTarget"/></property>
<property name="userDAO"><ref local="userDAOTarget"/></property>
</bean>
<!-- ================================ VIEW RESOLVER ===================================== -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<!-- ========================= ASPECT CONFIGURATION ======================== -->
<bean id="catalogFacade" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local="catalogFacadeTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="contains*">PROPAGATION_SUPPORTS,readOnly</prop>
<prop key="login*">PROPAGATION_SUPPORTS,readOnly</prop>
</props>
</property>
</bean>
<?xml version="1.0" encoding="UTF-8"?>
<!-- URL mapping -->
<bean id="urlMap"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<props>
<prop key="/welcome.htm">welcome</prop>
<prop key="/welcome">welcome</prop>
<prop key="/catalog.htm">catalog</prop>
<prop key="/catalog">catalog</prop>
</props>
</property>
</bean>
<!-- Controllers -->
<bean name="welcome"
class="com.bamboo.catW3.business.impl.Welcome">
<property name="successView">
<value>welcome</value>
</property>
<property name="catalogFacadeImpl" ref="catalogFacadeTarget"/>
</bean>
<bean name="catalog"
class="com.bamboo.catW3.business.impl.Catalog">
<property name="successView">
<value>catalog</value>
</property>
<property name="catalogFacadeImpl" ref="catalogFacadeTarget"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<property name="catalogFacadeImpl" ref="*catalogFacadeTarget*"/>
List users = catalogFacadeImpl.getUserList();
List categories = catalogFacadeImpl.getCategoryList();
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.bamboo.catW3.domain.Category.categories, no session or session was closed
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)