1.设置里 lazy = "false"
会导致 org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
"org.hibernate.LazyInitializationException: could not initialize proxy"延迟抓取出的错,hb3对many-to-one的默认处理是lazy = "proxy",把所有many-to-one,one-to-one都加上lazy="false"...
原因:hibernate3 many-to-one的默认选项是 lazy = "proxy"
解决方法:<many-to-one> & <set> 中设置 lazy="false"
2.说下解决方案~
在类名上@Proxy(lazy = false)注释~
然后在One的一方加入抓取模式注释 fetch = FetchType.EAGER~
3.Hibernate3延迟加载机制
首先说明Hibernate3延迟加载只多其中的load,get,find一些内值方法有用,对hql等写sql的无效。在Hibernate中提供了对实体对象的延迟加载以及对集合的延迟加载,另外在Hibernate3中还提供了对属性的延迟加载。
(1)实体对象的延迟加载
@OneToMany(mappedBy="role", fetch=FetchType.LAZY)
//mappedBy:定义双向关联中的从属类。使用在One一方,值为One方类名表示Many的从属类。
// // mappedBy="school"就相当于inverse=true,(mappedBy指定的是不需要维护关系的一端)
@OrderBy("id desc")
public Set<Staff> getStaffs() {
return staffs;
}
http://blog.csdn.net/it_man/archive/2009/08/02/4402317.aspx