zoukankan      html  css  js  c++  java
  • could not initialize proxy

    这是一个精典的问题:
    因为我们在hibernate里面load一个对象出来时,用到的是代理对象,也就是说当我们在执行load方法时并没有发sql语句,而是返回一个proxy对象。只有当们具体用到哪个get**方法时才会发sql语句,才会去数据库查。但是当我们把打开session,关闭session交给了srping去做时,当们load完之后我们的session就会被srping关闭,如果我们在jsp页面或者其它的地方再去用get方法取值时就会报这个错误。
    解决方法一:但如果我们在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就不会有上面的错误了
  • 相关阅读:
    Spring+Springmvc+SpringJDBC+freemaker+Logback配置
    POJ1942+找规律
    HDU2955+DP+背包变形
    HDU1201+简单题
    HDU1288+枚举
    面试经验(转)
    HDU1864+dp+类似背包
    PKU1659+havelhakimi定理
    算法复杂度分析(摘)
    HDU3047+并查集
  • 原文地址:https://www.cnblogs.com/LuckyBao/p/6002440.html
Copyright © 2011-2022 走看看