`
kane82
  • 浏览: 25375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

一个createQuery(hql)问题

 
阅读更多
在用Hibernate进行分页时,在进入前5页都很正常。在查询第6页的时候就像死机了一样。怎么也不动。
代码如下:
int totalRows = ((Integer)this.getSession().createQuery("select count(*) " + hql).uniqueResult()).intValue();    //查询总页数
  PaginationSupport page = new PaginationSupport(arealist, totalRows, currentPage);  //实现分页
  arealist.add(this.getListForPage(hql, (currentPage-1)*page.getPageSize(), page.getPageSize()));  //分页查询 


分页查询
public List getListForPage(final String hql, final int offset,
	     final int length) { 
	List list = getHibernateTemplate().executeFind(new HibernateCallback() {
	     public Object doInHibernate(Session session)
	     throws HibernateException, SQLException {
	     Query query = session.createQuery(hql);
	     query.setFirstResult(offset);
	     query.setMaxResults(length);
	     List list = query.list();
	     return list;
	     }
	});
	return list;
	}


在第六次查询时,在这里不动了。后台也没有错误出现。
arealist.add(this.getListForPage(hql, (currentPage-1)*page.getPageSize(), page.getPageSize()));

在执行分页查询的时候出错的。
分享到:
评论
2 楼 shanglo 2008-05-06  
不用 手动 关闭 session吧?
用 spring管理后, 怎么样拿到的 session 都不用 管吧?
1 楼 kane82 2008-05-06  
是这样的,在Hibernate中
获取session的两种方式:this.getSession();和this.getHibernateTemplate().getSessionFactory().openSession();
获取session以后再createQuery操作就一样了。但是这种做法,是需要自己去手动关闭session的。所以你需要配置openSessioninview

我加了这个配置,问题就好了。原文在
http://xrb2008.iteye.com/blog/152836

相关推荐

    hql语句 使用大全

    对于统计查询,通常只返回一个结果,因此使用`uniqueResult()`方法更为合适。 #### 5. 更新操作 执行更新操作时需要注意事务管理: ```java Transaction transaction = session.beginTransaction(); String hql = ...

    关于hibernate 的createQuery和createSqlQuery 的区别

    createQuery 方法是 Hibernate 提供的一种查询机制,用于执行 HQL(Hibernate Query Language)语句。HQL 语句是一种面向对象的查询语言,类似于 SQL 语句,但是它是基于对象的,而不是基于表的。createQuery 方法...

    HQL查询pdf资料

    查询结果将以`Object[]`数组的形式返回,数组中的每个元素对应一个属性。 HQL还提供了一种动态构造实例的功能,可以将查询结果映射为特定的Java对象,例如: ```java List<User> users = session.createQuery(...

    精通hibernate HQL语言

    HQL,全称Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言,它的语法结构与SQL相似,但主要针对对象和实体进行操作,而不是直接操作数据库表。HQL是Hibernate官方推荐的检索数据的主要方式...

    HQL语句详解Select/update/deletefromwhere...

    此外,还可以利用HQL的投影查询特性,创建一个新的对象实例: ```java List<User> users = session.createQuery("select new User(user.name, user.age) from User user").list(); for (User user : users) { ...

    Hibernate注解方式、HQL查询

    在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细探讨Hibernate的注解方式以及HQL(Hibernate Query Language)查询...

    HQL是hibernate自己的一套查询

    在上面的示例中,我们首先通过`HibernateUtil.getSession()`方法获取到一个`Session`实例,然后定义了一个HQL查询语句,该语句用于从`Admin`表中查询`aname`为`name`的所有记录。最后通过`createQuery`方法创建查询...

    Hibernate 课件_HQL

    - **示例**:假设有一个`User`实体包含一个指向`Role`实体的引用属性`role`,可以通过`User`对象查询其对应的`Role`对象。 #### 联合查询 - **定义**:联合查询是将多个查询的结果合并到一个结果集中。 - **实现**...

    hql模糊查询hql模糊查询

    在这个示例中,我们首先定义了一个HQL查询字符串,该字符串指定了查询的类(Subject)以及模糊匹配的字段(subname 和 subinfo)。接着,我们通过`session.createQuery()`方法创建了一个`Query`对象,并使用`...

    HQL语法入门学习HQL语法入门学习

    在Java开发中,Hibernate作为一个流行的ORM工具,通过HQL将对象模型与关系数据库之间的操作进行了抽象,使得开发者能够避免直接操作SQL,从而降低了数据库的耦合度,提高了代码的可读性和可维护性。HQL支持复杂的...

    hql总条数.txt

    接着,使用`session.createQuery(hql)`创建一个`Query`对象,这将HQL查询语句转换为可执行的对象。 3. **结果处理**:`query.uniqueResult()`方法用于执行HQL查询并返回单个结果。这里假设查询结果是一个数值,因此...

    HQL进阶语句

    这里的 `result` 是一个 Object 数组列表,每个数组包含两个元素,分别对应 name 和 age 的值。 4、多表联合查询:在实际项目中,经常需要处理多个表之间的关联查询。HQL 支持 JOIN 语法来实现这一需求。例如,假设...

    HQL批量插入、更新和删除

    HQL是Hibernate框架中的一个核心特性,它允许开发者以面向对象的方式编写查询语句,从而简化了数据库操作过程。 #### 二、HQL批量插入 在批量插入数据时,需要注意内存管理问题。如果一次性插入大量数据,可能会...

    hql增删改查

    这是进行HQL查询的基础,所有的HQL操作都需要在一个有效的Session中进行。 #### 2. 更新记录 (update()) `update()`方法用于更新数据库中的记录。例如: ```java String hql = "update Employee as e set e.name =...

    HQL语句大全HQL语句大全

    - 在执行任何HQL查询之前,首先需要通过`SessionFactory`获取一个`Session`实例。 ```java Session session = HibernateUtil.getSessionFactory().openSession(); ``` 2. **编写HQL语句** - 根据需求编写相应...

    HQL.pdf数据查询语句

    例如,查询一个名为User的实体类的所有记录,可以使用以下语句: ```java Session session = sessionFactory.openSession(); Query query = session.createQuery("from User"); List<User> names = query.list(); ...

    HQL 语法总结 实体查询

    假设有一个名为 `TUser` 的类,我们可以通过以下方式来进行实体查询: ```java String hql = "from TUser"; ``` 执行这条语句会返回 `TUser` 以及其子类的所有记录。需要注意的是,如果 `TUser` 类具有外键关联,...

    Hiberbate hql总结

    默认情况下,HQL查询返回的结果是`Object[]`数组,但你可以通过创建一个新的实例来改变这个行为。例如,如果你想让结果直接是一个包含多个字段值的`List`,可以这样做: ```java String hql = "select new list...

    HQL语法大全,并带有详细的例子

    3. **创建查询对象**:将编写的HQL语句传递给Session的`createQuery`方法来创建一个Query实例。 4. **设置参数**:如果HQL语句中含有参数,则需要通过Query对象的`setXxx`方法为这些参数赋值。 5. **执行查询并遍历...

Global site tag (gtag.js) - Google Analytics