在写SSH项目的用户退出时遇到的问题

xiaoxiao2021-02-28  42

1. 当时的情况 用户退出时要把购物车插入数据库:设置购物车的status.sid=0; 等下次用户再登录的时候,就直接把数据库里购物车中status.sid=0的购物车拿出来,放到session里。【Forder是购物车–1对多关系–Sorder是购物项】 2. 遇到的问题 (1)Forder forder=forderService.findByStatus_users(users, 0),此时forder.sorder是空的! 因为是对象关系映射,即使你根据用户查到了购物车,但此时购物车对象中的属性sorders集合是还没有赋值,这点需要注意。

解决办法:通过List sorders=sorderService.findByfid(forder.getFid())得到购物项,再根据for循环把购物项添加到购物车里。

(2)异常信息如下:failed to lazily initialize a collection of role: cn.itcast.shop.pojo.Forder.sorders, no session or session was closed

解决办法: a)、设置lazy=false:

<many-to-one name="status" class="Status" lazy="false">

b)、就是使用filter,过滤所有的链接。在使用filter的时候,要配置事务处理,否则会导致session处于只读状态而不能做修改、删除的动作。

<filter> <filter-name>hibernateFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name>hibernateFilter</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping>

参考更多解决办法

转载请注明原文地址: https://www.6miu.com/read-2150397.html

最新回复(0)