路峰
2011-04-29 09:56
浏览 229
已采纳

关于Hibernate的延迟加载

 

 为什么多对一的关系在hbm.xml文件中必须把class标签的lazy属性值必须设置成false才可以,还有返回查询返回List对象结果集时必须将hbm.xml文件的hibernate-mapping的属性default-lazy值设置成false否则就会出现下面的错误啊

 

 

08:42:43,546 ERROR LazyInitializationException:19 - could not initialize proxy - the owning Session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:60)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:111)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:172)

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

5条回答 默认 最新

  • xiaowen0713 2011-04-30 10:07
    最佳回答

    恩,是的.那个整合了spring.如果没整合spring的话你可以自己写一个过滤器,用来决定什么时候才关闭session.

    还有,用了lazy=false会降低hibernate的数据检索效率.推荐使用fetch="join",然后在HQL语句中使用left join fetch的方式进行加载关联表的数据.

    评论
    解决 无用
    打赏 举报
查看更多回答(4条)

相关推荐 更多相似问题