org.hibernate.LazyInitializationException: could not initialize proxy - no Sessi

 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

 

 

你可能感兴趣的:(sql,Hibernate,.net,Blog,F#)