- 最近在使用Hibernate进行分页查询的时候,发现dao层和实现层都进行的简单的封装 - BaseDao,查询条件是从action入参。然而业务中会经常碰到分页查询并带有排序参数,下面是我调整后的代码:
public Pager findAll(DetachedCriteria detached, int offset, int length) { Criteria criteria = detached.getExecutableCriteria(sessionFactory.getCurrentSession()); List<CriteriaImpl.OrderEntry> orderEntries = null; Field field = ReflectionUtils.findField(CriteriaImpl.class, "orderEntries"); // 获取criteria中orderEntries字段 field.setAccessible(true); orderEntries = (List<CriteriaImpl.OrderEntry>) ReflectionUtils.getField(field, criteria);//获取实体类排序字段集合 ReflectionUtils.setField
DetachedCriteria 解决BaseDao分页查询和排序问题
最新推荐文章于 2021-09-04 10:41:14 发布
本文介绍了在Hibernate中如何利用DetachedCriteria解决BaseDao层的分页查询和排序问题。通过反射技术调整Criteria对象,确保在获取总记录数时不包含排序条件,而在实际获取数据时恢复排序,从而实现正确分页与排序的效果。
摘要由CSDN通过智能技术生成