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外也可以取。
有机会再深入理解这些吧。