小弟在用Hibernate的query的时候,在获取数据的时候用iterator获取数据,可是很奇怪在第一次能够获取出数据,可是第二次再执行的时候,只能获取到类的实例,但是实例中的属性都是null。用list好像就没有问题。 看了一下网上说,因为list没有用二级缓存,而iterator会先取id然后从缓从中加载,我大致感觉应该是缓存的问题。
不知道Hibernate中我想使用iterator这种方式应该怎么写?
代码如下 sb = new StringBuffer(); sb.append("From SbBlogitems as b "); sb.append("join b.smUsers as u "); sb.append("Where u.id = :userId "); hql = sb.toString(); Query q = getSession().createQuery(hql); q.setInteger("userId", userId); q.setFirstResult((pageInfo.getCurrentPageNo() - 1) * pageInfo.getPagesize()); q.setFetchSize(pageInfo.getPagesize()); Iterator blogItems = q.iterate(); while (blogItems.hasNext()) { Object[] items = (Object[])blogItems.next(); //此处第二次为一个空实例 SbBlogitems bi = (SbBlogitems)items[0]; }
|
|