在用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()));
在执行分页查询的时候出错的。
分享到:
相关推荐
对于统计查询,通常只返回一个结果,因此使用`uniqueResult()`方法更为合适。 #### 5. 更新操作 执行更新操作时需要注意事务管理: ```java Transaction transaction = session.beginTransaction(); String hql = ...
createQuery 方法是 Hibernate 提供的一种查询机制,用于执行 HQL(Hibernate Query Language)语句。HQL 语句是一种面向对象的查询语言,类似于 SQL 语句,但是它是基于对象的,而不是基于表的。createQuery 方法...
查询结果将以`Object[]`数组的形式返回,数组中的每个元素对应一个属性。 HQL还提供了一种动态构造实例的功能,可以将查询结果映射为特定的Java对象,例如: ```java List<User> users = session.createQuery(...
HQL,全称Hibernate Query Language,是Hibernate框架提供的一种面向对象的查询语言,它的语法结构与SQL相似,但主要针对对象和实体进行操作,而不是直接操作数据库表。HQL是Hibernate官方推荐的检索数据的主要方式...
此外,还可以利用HQL的投影查询特性,创建一个新的对象实例: ```java List<User> users = session.createQuery("select new User(user.name, user.age) from User user").list(); for (User user : users) { ...
在Java世界中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细探讨Hibernate的注解方式以及HQL(Hibernate Query Language)查询...
在上面的示例中,我们首先通过`HibernateUtil.getSession()`方法获取到一个`Session`实例,然后定义了一个HQL查询语句,该语句用于从`Admin`表中查询`aname`为`name`的所有记录。最后通过`createQuery`方法创建查询...
- **示例**:假设有一个`User`实体包含一个指向`Role`实体的引用属性`role`,可以通过`User`对象查询其对应的`Role`对象。 #### 联合查询 - **定义**:联合查询是将多个查询的结果合并到一个结果集中。 - **实现**...
在这个示例中,我们首先定义了一个HQL查询字符串,该字符串指定了查询的类(Subject)以及模糊匹配的字段(subname 和 subinfo)。接着,我们通过`session.createQuery()`方法创建了一个`Query`对象,并使用`...
在Java开发中,Hibernate作为一个流行的ORM工具,通过HQL将对象模型与关系数据库之间的操作进行了抽象,使得开发者能够避免直接操作SQL,从而降低了数据库的耦合度,提高了代码的可读性和可维护性。HQL支持复杂的...
接着,使用`session.createQuery(hql)`创建一个`Query`对象,这将HQL查询语句转换为可执行的对象。 3. **结果处理**:`query.uniqueResult()`方法用于执行HQL查询并返回单个结果。这里假设查询结果是一个数值,因此...
这里的 `result` 是一个 Object 数组列表,每个数组包含两个元素,分别对应 name 和 age 的值。 4、多表联合查询:在实际项目中,经常需要处理多个表之间的关联查询。HQL 支持 JOIN 语法来实现这一需求。例如,假设...
HQL是Hibernate框架中的一个核心特性,它允许开发者以面向对象的方式编写查询语句,从而简化了数据库操作过程。 #### 二、HQL批量插入 在批量插入数据时,需要注意内存管理问题。如果一次性插入大量数据,可能会...
这是进行HQL查询的基础,所有的HQL操作都需要在一个有效的Session中进行。 #### 2. 更新记录 (update()) `update()`方法用于更新数据库中的记录。例如: ```java String hql = "update Employee as e set e.name =...
- 在执行任何HQL查询之前,首先需要通过`SessionFactory`获取一个`Session`实例。 ```java Session session = HibernateUtil.getSessionFactory().openSession(); ``` 2. **编写HQL语句** - 根据需求编写相应...
例如,查询一个名为User的实体类的所有记录,可以使用以下语句: ```java Session session = sessionFactory.openSession(); Query query = session.createQuery("from User"); List<User> names = query.list(); ...
假设有一个名为 `TUser` 的类,我们可以通过以下方式来进行实体查询: ```java String hql = "from TUser"; ``` 执行这条语句会返回 `TUser` 以及其子类的所有记录。需要注意的是,如果 `TUser` 类具有外键关联,...
默认情况下,HQL查询返回的结果是`Object[]`数组,但你可以通过创建一个新的实例来改变这个行为。例如,如果你想让结果直接是一个包含多个字段值的`List`,可以这样做: ```java String hql = "select new list...
3. **创建查询对象**:将编写的HQL语句传递给Session的`createQuery`方法来创建一个Query实例。 4. **设置参数**:如果HQL语句中含有参数,则需要通过Query对象的`setXxx`方法为这些参数赋值。 5. **执行查询并遍历...