随笔-7  评论-24  文章-102  trackbacks-0

1:主要说的是问题出在CGLib上面,修正一下就可以了,下载中也给出了patch,使用hibernate3.1把cglib从2.1.3更新到2.2.beta1。
2:设置相关表的lazy="false"解决问题。

总的来说是延迟加载,在写测试类的时候没问题,但是应用到 web 页面就会出错。或者升级下 Hibernate 版本能修正这个错误。



相关: 浅谈hibernate lazy fetch

1、fetch 的优先级高于 lazy,一般情况下(另外一般情况下除外,下篇会讲到)fetch的优先级高于 lazy,若出现了 fetch,则忽略 lazy。

2、在配置文件中多对一时,一定要明确声明 lazy=false 或 true,在多对一时,默认情况下,lazy 即不是 true 也不是 false。你若不明确指出,它执行的时候是按照 lazy=true 这种方式执行的,但是你若明确写上 lazy=true,指报出错误,一般情况下明确写上 lazy=false。

3、你的代码若像 Student student = (Student)session.get(Student.class, 1),hibernate 会正确按照配置文件的策略来执行,有 fetch 则执行fetch,有 lazy 则执行 lazy;但你的代码若像 Query query = session.createQuery("from Student"),它会忽略配置文件中的 fetch,它不会执行  fetch=join,lazy 会被正确执行,Student 的属性(这里假定是Team,它是对象)的配置文件中的 fetch 会被正确执行。

4、Query query = session.createQuery("from Student s left outer join s.team"),会忽略 Student 和 Team 类的配置文件的 fetch,但它们类中的 lazy 会被正确执行。

posted on 2009-04-18 00:17 黄小二 阅读(353) 评论(0)  编辑  收藏 所属分类: S/S2SH

只有注册用户登录后才能发表评论。


网站导航: