hibernate分页奇怪问题

程序员猪佩琪 2009-03-21 05:31:26
今天在做hibernate分页时遇到一个奇怪的问题,我在一的一端加载数据能够在Web端显示出来
调用的方法
public List getTestClassList(int pagesize,int currow) {
log.debug("get page data");
List vehicleList = null;
Session session = this.getSession();
Transaction transaction= session.beginTransaction();
try{
Query q=session.createQuery("from TestClass");
q.setFirstResult(currow);
q.setMaxResults(pagesize);
vehicleList=q.list();
session.flush();
return vehicleList;
}catch(RuntimeException re){
log.error("get page data failed", re);
throw re;
}finally{
transaction.commit();
session.close();
}
}

但是在多的一端加载数据时也调用相同的方法,把TestClass换成多的一端的实体类进行调用,结果能显示出调用的sql
但是却抱了一个错误
[ERROR] 2009-03-21 04:19:29 org.hibernate.LazyInitializationException - could not initialize proxy - the owning Session was closed
org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed
为什么加载一的一端可以显示出来,调用多的一端就不能显示出来了。而且我在多的一端也加了lazy=false属性。
...全文
145 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
renfengjun 2009-04-07
  • 打赏
  • 举报
回复
session不能关,不然lazy="true"无法起作用,还有就是你那个Transaction 我不知道在查询里面 用事务处理有什么用。
lin_eric 2009-03-27
  • 打赏
  • 举报
回复
再映射文件中设置lazy="false" 就行了~因为它默认的是延迟加载,你的session已经闭了的时候,要调用数据时就会出现你所说的那咱错误了
yjaqktpp 2009-03-27
  • 打赏
  • 举报
回复
然月枕流君 2009-03-22
  • 打赏
  • 举报
回复
lazy="false"就OK
<set name="students" inverse="true" cascade="all" lazy="false">
<key column="classesid"/>
<one-to-many class="Student"/>
</set>
Shine_Panda 2009-03-22
  • 打赏
  • 举报
回复
顶。。。。。。。。。3楼
程序员猪佩琪 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 w412692660 的回复:]
lazy="false"就OK
Java code<set name="students"inverse="true"cascade="all"lazy="false"><key column="classesid"/><one-to-manyclass="Student"/></set>
[/Quote]
这样且不是要加载很多数据,我只想用多的一端的数据和他跟一的一端相联系的外键,如果用你这样的方法,且
不是把一的一端的数据全加载。
程序员猪佩琪 2009-03-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuwenjie517333813 的回复:]
现在多的一端加载出来了,也把它显示在网页中去了,但是要由多的一端去取一的一端的数据时,比如去取一的一端一个属性时却显示不出来。
[/Quote]
这样且不是要加载很多数据,我只想用多的一端的数据和他跟一的一端相联系的外键,如果用你这样的方法,且
不是把一的一端的数据全加载。
Looking_Glass 2009-03-22
  • 打赏
  • 举报
回复
你试下遍历list,调用Hibernate.initialize(TestClass.get....)把TestClass多对一的对象初始化一下!应该就OK拉!
loginSuccess 2009-03-22
  • 打赏
  • 举报
回复
loginSuccess
程序员猪佩琪 2009-03-21
  • 打赏
  • 举报
回复
现在多的一端加载出来了,也把它显示在网页中去了,但是要由多的一端去取一的一端的数据时,比如去取一的一端一个属性时却显示不出来。
Wbl314 2009-03-21
  • 打赏
  • 举报
回复
懒加载异常

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧