@Override
public PageBean findPaginated(DetachedCriteria detachedCriteria,PageBean pageBean) {
// TODO 今天记得修改 去掉DetachedCriteria中的projection
//根据该条件获得总记录数
Long total=this.getRowCount(detachedCriteria);
List<T> datas=this.findByCriteria(detachedCriteria, pageBean.getOffset(), pageBean.getPageSize());
pageBean.setDatas(datas);
pageBean.setTotal(total);
return pageBean;
}
// 使用指定的检索标准获取满足标准的记录数
public Long getRowCount(final DetachedCriteria detachedCriteria) {
return getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria=detachedCriteria.getExecutableCriteria(session);
CriteriaImpl criteriaImpl=(CriteriaImpl) criteria;
Projection projection=criteriaImpl.getProjection();
logger.debug("SQL:"+Projections.rowCount());
Long totalCount=(java.lang.Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
criteria.setProjection(projection);
if(projection==null){
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
}
return totalCount;
}
});
}
public List findByCriteria(DetachedCriteria criteria, int firstResult,
int maxResults) {
return getHibernateTemplate().findByCriteria(criteria, firstResult,
maxResults);
}
这个问题纠结我好长时间,每次查询出来总行数后,在查询就不能查询实体的信息了即使setProjectinos为null,但是查询出来的结果在有关联的情况下是List<Object[]>类型的
也就是说DetachedCriteria本身还是有问题,具体的原因我说不出来.但是这也是一种解决方案.希望对大家也有所帮助,
这样就可以将DetachedCriteria进行封装,在分页条件下查询总行数,
分享到:
相关推荐
- 在服务层进行分页查询时,可以先创建DetachedCriteria,然后在视图层根据请求参数调整限制条件,避免重复计算。 **4. DetachedCriteria 的基本用法** 创建DetachedCriteria通常从`DetachedCriteria.forClass()`...
Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。Criterion 是 Criteria 的查询条件,可以使用 `add(Criterion criterion)` 方法来添加查询条件。Criterion 接口的主要实现包括 ...
DetachedCriteria
DetachedCriteria 查询 DetachedCriteria 是 Hibernate 中的一种离线查询对象,它可以在不依赖 Session 的情况下生成动态 SQL 语句并进行查询。下面是 DetachedCriteria 查询的详细知识点: 创建 DetachedCriteria...
### DetachedCriteria 使用详解 #### 一、基本使用 **1. 说明** `DetachedCriteria` 是 Hibernate 提供的一种灵活且强大的查询机制,它允许你在脱离 Session 的情况下构建复杂的查询标准,这意味着你可以提前构建...
例如,我们可以使用DetachedCriteria对象来创建一个基本的查询,然后根据需要添加限制条件(Restrictions)、排序(Order)等。 分页功能在大数据量的查询中尤为重要,因为它可以避免一次性加载过多数据导致性能...
在Java的持久化框架Hibernate中,DetachedCriteria是一个强大的查询工具,它允许我们在不与Session交互的情况下构建查询条件。然而,DetachedCriteria在处理复杂的关联查询,尤其是涉及到表连接(JOIN)时,可能存在...
在Web编程中,DetachedCriteria和Criteria可以解决动态条件查询的问题,提高程序的灵活性和可维护性。 DetachedCriteria的使用方法: DetachedCriteria是离线的查询工具,可以在Web层构造查询条件,然后将其传递给...
- **使用场景**:`Criteria` 适用于即时查询,而 `DetachedCriteria` 更适合跨层传递查询条件。 - **灵活性**:`DetachedCriteria` 提供了更大的灵活性,可以在不同层之间传递而不会丢失查询状态。 #### 三、`...
在IT行业中,数据库分页是一项基础且重要的技术,特别是在大数据量的展示场景下,它能够有效地提高用户体验,避免一次性加载过多数据导致的性能问题。本篇文章将深入探讨使用Hibernate ORM框架与SQL Server 2000...
Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode(联合查询抓取的模式)、设置排序方式,对于 Criteria 还可以设置 FlushMode(冲刷 Session 的方式)和 ...
Criteria API可以通过DetachedCriteria对象创建查询条件,然后调用setFirstResult和setMaxResults方法实现分页。HQL则通过LIMIT子句实现分页,但不适用于所有的数据库系统,因为它不是SQL标准的一部分。 **整合使用...
然后,在主查询中,我们使用了这个条件并进行分页,同时按博客的发布时间进行升序排序。 以上就是关于“Hibernate在查询操作中使用分页+命名参数+排序技术”的详细介绍。在实际开发中,熟练掌握这些技巧能帮助我们...
Criterion查询还可以与Projection一起使用,实现分组、聚合等功能。Projection是定义查询结果的结构,例如,我们可以获取每个组的平均年龄,或者计算所有用户的总和。例如: ```java DetachedCriteria ...
Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式)、设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...
6. **投影**:Criteria查询不仅可以获取完整的对象,还可以进行投影操作,如获取特定属性的列表(`Projection.list()`)或计算聚合函数(`Projections.sum()`, `Projections.avg()`, `Projections.max()`, `...
Criteria查询提供了动态构建查询的方式,可以通过DetachedCriteria实现分页;HQL是面向对象的查询语言,可以方便地进行分页;对于更复杂的SQL操作,可以直接使用SQL查询,并配合 ScrollableResults 接口实现分页。在...
Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 设置查询条件。可以设置 FetchMode(联合查询抓取的模式),设置排序方式。对于 Criteria 还可以设置 FlushModel(冲刷 Session 的方式)和 ...
通过理解并熟练掌握`Criteria`、`DetachedCriteria`、`Criterion`和`Projection`等核心概念及其使用方法,可以显著提升数据库操作的效率和代码的可维护性。在实际项目中,结合Spring框架的便利性,开发者能够更加...
此外,Criteria还支持分页查询、排序、条件筛选等功能,极大地提高了开发效率。 #### 三、创建Criteria实例 1. **创建Criteria实例:** 首先,我们需要从`org.hibernate.Session`获取到一个`Criteria`实例。这可以...