could not initialize proxy - no Session
2016-03-22 16:22
411 查看
这是一个精典的问题:
因为我们在hibernate里面load一个对象出来时,用到的是代理对象,也就是说当我们在执行load方法时并没有发sql语句,而是返回一个proxy对象。只有当们具体用到哪个get**方法时才会发sql语句,才会去数据库查。但是当我们把打开session,关闭session交给了srping去做时,当们load完之后我们的session就会被srping关闭,如果我们在jsp页面或者其它的地方再去用get方法取值时就会报这个错误。
解决方法一:但如果我们在hibernate用get方法就可以解决取单个对象的问题,因为get方法直接发sql语句,把我们想的数据从数据库中get出来然后放在内存中。
如果我们取单个对象可以用get方法没有问题;但是如果我们取的的对象还有关联对象时用get就有问题,因为它不会把关联的对象取出来,但如果页面上用到关联的对象时也会报nosession的问题
解决方法二:用到srping的filter(要加在strutsfilter有前面,因为它也有先后顺序,有先进先出的原则)
在我们的web.xml里面加上
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样做就是让opensessionclosesession全交给视图部分,最后视图部分用完了session再去关session就不会有上面的错误了
因为我们在hibernate里面load一个对象出来时,用到的是代理对象,也就是说当我们在执行load方法时并没有发sql语句,而是返回一个proxy对象。只有当们具体用到哪个get**方法时才会发sql语句,才会去数据库查。但是当我们把打开session,关闭session交给了srping去做时,当们load完之后我们的session就会被srping关闭,如果我们在jsp页面或者其它的地方再去用get方法取值时就会报这个错误。
解决方法一:但如果我们在hibernate用get方法就可以解决取单个对象的问题,因为get方法直接发sql语句,把我们想的数据从数据库中get出来然后放在内存中。
如果我们取单个对象可以用get方法没有问题;但是如果我们取的的对象还有关联对象时用get就有问题,因为它不会把关联的对象取出来,但如果页面上用到关联的对象时也会报nosession的问题
解决方法二:用到srping的filter(要加在strutsfilter有前面,因为它也有先后顺序,有先进先出的原则)
在我们的web.xml里面加上
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这样做就是让opensessionclosesession全交给视图部分,最后视图部分用完了session再去关session就不会有上面的错误了
相关文章推荐
- 查询每个学生的各科成绩sql语句
- 汇总:JSTL时间操作
- Spring Security(09)——Filter
- 完成端口详解【IOCP】
- xFire 实现webservice
- Could not find Developer Disk Image (今天更新iOS9.3)
- 苹果Mac OS X怎样调整Ctrl/Option/Cmd按键位置
- js获取当前日期
- 安卓--selector简单使用
- UIMenuController使用
- css读书笔记1:HTML标记和文档结构
- 基础练习 数列特征
- Java多线程系列--“JUC原子类”02之 AtomicLong原子类
- 学习进度表
- Javascript中的几种继承方式对比分析
- Poj 3262 Protecting the Flowers【贪心】
- Python的一些简单示例
- CF 598C Nearest vectors (精度)
- Android中点击文字打开QQ对话
- Android Studio多工程引用同一个library项目配置方法