Hibernate: failed to lazily initialize a collection of role

myeclipse提示的错误显示:

2013-06-07 18:27:52,154 ERROR [org.hibernate.LazyInitializationException] - failed to lazily initialize a collection of role: com.idealing.model.LCanalReach.LBuildingCodes, no session or session was closed

查询的解决方案是

    设置 lazy = false;

    如果是annotation:@OneToMany(XXXX....fetch=FetchType.EAGER)

    但是,感觉这样会导致一些不必要的内存消耗,如下:   

     如果是EAGER,那么表示取出这条数据时,它关联的数据也同时取出放入内存中

     如果是LAZY,那么取出这条数据时,它关联的数据并不取出来,在同一个session中,什么时候要用,就什么时候取(再次访问数据库)。

但是,在session外,就不能再取了。用EAGER时,因为在内存里,所以在session外也可以取。

      有机会再深入理解这些吧。

     

 

posted @ 2013-06-07 18:53  idealing  阅读(455)  评论(0)    收藏  举报