spring data JPA 中的多屬性排序


在此介紹我所用的一種方式:

第一步,引包

import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;

第二步,service方法代碼

  @Override
public Page<TurnOverRecord> findAll(Integer pageNum, Integer pageSize, TurnOverRecord turnOverRecord) {
    //多屬性排序
    //先按isTurnOver從小到大升序,再按turnOverTime升序
List< Order> orders=new ArrayList< Order>();
orders.add( new Order(Sort.Direction. ASC, "isTurnOver"));
orders.add( new Order(Sort.Direction. ASC, "turnOverTime"));
Pageable pageable= new PageRequest(pageNum - 1, pageSize, new Sort(orders));

Specification<TurnOverRecord> specification = new Specification<TurnOverRecord>() {
@Override
public Predicate toPredicate(Root<TurnOverRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate = cb.conjunction();
// 單屬性排序
          // query.orderBy(cb.asc(root.get("isTurnOver")));
          // query.orderBy(cb.desc(root.get("id")));
          // query.groupBy(root.get("id"));
query.distinct(true);
//基礎條件
predicate.getExpressions().add(cb.equal(root.get("flag"), 1));
if (turnOverRecord != null) {
其他篩選條件
}
return predicate;
}
};
return turnOverRecordDao.findAll(specification, pageable);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM