发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

hibernate 的lazy加载问题

2007-04-19 09:42
赞助商链接

banq大哥:
用了Hibernate, 但是没有用Spring.
我有一个类中有两个方法:
1,List list=mgr.list();通过HibernateSession得到list列表。里面对象为“对象1”,“对象1”有一个Set属性,是一个对象集合,这个对象为“对象2”,并且配置文件设置为lazy。
2,Set set=mgr.set(list);将里面set对象重新组成这个对象集合,去掉了重复,这个里面没有用到HibernateSession。
但是再用到方法2时就报错:net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a coll
ection - no session or session was closed
at net.sf.hibernate.collection.PersistentCollection.initialize(Persisten
tCollection.java:209)
这个问题困或了我好长时间,不知怎么解决?

2007-04-19 12:54

怎么没有人看哪?请问大家没有遇到这个情况吗?

diz
2007-04-19 16:18

由于你是lazy的,当你取这个List的时候,这个对象已经detch掉了!

2007-04-20 22:23

应该不是吧,但是只要这个持久对象在的话,就可以与数据库进行交互吧

diz
2007-04-23 09:38

当然不是!hibernate的po是用cglib动态生成的,楼主请去看一下SessionFactoryImpl中的代码,所有的Po是放在一个HashMap里面的,当时transcient方法会从map中remove掉一个对象!这个就是为什么hibernate非常强调用有业务意义的逻辑去写hashcode和equal的原因

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系反馈 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com