failed to lazily initialize a collection of role 除了在Set中设置 lazy="false" 还有没有其他的解决方法?

解决方案 »

  1.   

    你在表设计时可以关联,但是Hibernate映射文件你可以不用做关联呀。
      

  2.   

    <filter>
    <filter-name>openSessionInView</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    <init-param>
    <param-name>singleSession</param-name>
    <param-value>false</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>openSessionInView</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>加载web.xml
      

  3.   

    这个是不是要配置Spring环境?
      

  4.   

    在使用hibernate进行持久化时,有时需要动态的改变对象的加载,比如在编辑页面里面lazy=true,而在浏览页面lazy=false,这样可以在需要lazy的地方才进行控制。而配置文件中Lazy属性是全局控制的,如何处理呢?
    在配置文件里面可以用lazy=true,在程序里面可以用强制加载的方法Hibernate.initialize(Object proxy) 方法强制加载这样就相当于动态改变为lazy=false。
    但在使用时需要注意的一点是:其中的proxy是持久对象的关联对象属性,比如A实体,你要把A的关联实体B也检出,则要写Hibernate.initialize(a.b)。
    本文来自:关注J2EE,http://www.gbsou.com
      

  5.   

    设置OpenSessionInViewFilter就可以了 可以baidu一下
      

  6.   


    大概还有三种方法:1. 在Set中设置 fetch="subselect"2. 在Set中设置 fetch="join"3. session.createQuery("from TestItem i left join fetch i.bids").list();