今天在学hibernate的时候遇到一个异常:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
网上搜到的解决办法是设置lazy=false。
问题虽然解决了,但我有个疑问:延迟加载的作用是在程序未调用前,由hibernate生成一个代理对象,调用时再从数据库读取。但是在调用的时候,dao里面事务已经提交了,session也关闭了,不是明摆着报异常么...
比如说如下代码:
User.java....
private UserGroup userGroup ;
....UserGroup.java....
private Set<User> users ;
....UserDao.java...
public User getById(int id) {
Session session = getSession() ;
User user = (User) session.get(User.class, id) ;
return user;
}
...UserGroup.hbm.xml <set name="users" table="DF_USER" inverse="false" lazy="true">
<key>
<column name="[USERGROUP_ID]" />
</key>
<one-to-many class="test.model.User" />
</set>
</set>如果在UserService.java中这么写的话就会有异常:...
User u = userDao.getById(1);
UserGroup ug = u.getUserGroup() ;
...想请教下,lazy=true到底是在什么情况下才会用呢?hibernatejava
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
网上搜到的解决办法是设置lazy=false。
问题虽然解决了,但我有个疑问:延迟加载的作用是在程序未调用前,由hibernate生成一个代理对象,调用时再从数据库读取。但是在调用的时候,dao里面事务已经提交了,session也关闭了,不是明摆着报异常么...
比如说如下代码:
User.java....
private UserGroup userGroup ;
....UserGroup.java....
private Set<User> users ;
....UserDao.java...
public User getById(int id) {
Session session = getSession() ;
User user = (User) session.get(User.class, id) ;
return user;
}
...UserGroup.hbm.xml <set name="users" table="DF_USER" inverse="false" lazy="true">
<key>
<column name="[USERGROUP_ID]" />
</key>
<one-to-many class="test.model.User" />
</set>
</set>如果在UserService.java中这么写的话就会有异常:...
User u = userDao.getById(1);
UserGroup ug = u.getUserGroup() ;
...想请教下,lazy=true到底是在什么情况下才会用呢?hibernatejava
解决方案 »
- Cannot find bean list in any scope亲们 救救我吧 。。 struts菜鸟提问
- jfreechart中的一个方法的使用
- 关于io的错误 谢谢帮忙指出
- tomcat可以作为生产服务器吗?
- axis在struts中
- tomcat6关于Cannot create JDBC driver of class '' for connect URL 'null'
- 关于lazy="true"
- tomcat如何配置可以直接以http://localhost访问?
- 如何在jdatastore数据库中有AutoIncrement字段的表插入一条数据!在线结帖!
- 请前辈们说说用JB5开发EJB2应该注意哪些问题?怎样搭配环境?
- 求仿orm的jdbc反射通用类,只支持mysql也行
- 【求解】Struts2+Spring整合出现的问题
原文:点击查看http://blog.sina.com.cn/s/blog_6c673bfb010122us.html