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