diypyh
2017-03-20 03:06
采纳率: 16.7%
浏览 832
已采纳

关于hinernate “no Session”的问题

最段自己在研究项目,发现一个很奇怪的现象,就是这个”could not initialize proxy - no Session“。

我已经在web.xml中加入了”openSessionInView“的过滤器,在JSP页面上是可以读取到关联对象的。可是在我登录时处理登录信息的时候报了这个错,真是无语了。

看看我的代码吧:
1、用户登录成功,发布登录事件

2、接收到登录事件,处理登录信息

3、处理授权信息,然后封装用户

4、封装用户时报错了

报错了:

有谁遇到过这样的问题呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 已采纳

    解决方法一:但如果我们在hibernate用get方法就可以解决取单个对象的问题,因为get方法直接发sql语句,把我们想的数据从数据库中get出来然后放在内存中。
    如果我们取单个对象可以用get方法没有问题;但是如果我们取的的对象还有关联对象时用get就有问题,因为它不会把关联的对象取出来,但如果页面上用到关联的对象时也会报no session的问题
    解决方法二:用到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>
    

    这样做就是让opensession closesession全交给视图部分,最后视图部分用完了session再去关session就不会有上面的错误了

    点赞 评论
  • 解决方法一:但如果我们在hibernate用get方法就可以解决取单个对象的问题,因为get方法直接发sql语句,把我们想的数据从数据库中get出来然后放在内存中。
    如果我们取单个对象可以用get方法没有问题;但是如果我们取的的对象还有关联对象时用get就有问题,因为它不会把关联的对象取出来,但如果页面上用到关联的对象时也会报no session的问题
    解决方法二:用到srping的filter(要加在strutsfilter有前面,因为它也有先后顺序,有先进先出的原则)
    在我们的web.xml里面加上

    openSessionInView
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter


    openSessionInView
    /*

    这样做就是让opensession closesession全交给视图部分,最后视图部分用完了session再去关session就不会有上面的错误了

    点赞 评论
  • diypyh 2017-03-20 04:35

    非常感谢,问题找到了。openSessionInView过滤器的顺序问题,我现在是将这个过滤器放到了第一位,所有问题都解决了,再次感谢

    点赞 评论

相关推荐 更多相似问题