JPA Specification常用查詢+排序
阿新 • • 發佈:2018-12-05
第一步:繼承父類
public interface TblCarton2RCardLogRepository extends JpaRepository<TblCarton2RCardLog, String>,JpaSpecificationExecutor<TblCarton2RCardLog> {
第二步:
tblCarton2RCardLogRepository.findAll(new Specification<TblCarton2RCardLog>() { @Override public Predicate toPredicate(Root<TblCarton2RCardLog> root, CriteriaQuery<?> query,CriteriaBuilder cb) { List<Predicate> list = new ArrayList<Predicate>(); list.add(cb.equal(root.get("cartonNo").as(String.class), cartonNo));//某普通欄位 list.add(cb.equal(root.get("id").get("rCard").as(String.class), rCard));//主鍵中某欄位 list.add(cb.like(root.get("mocode").as(String.class), "%" + mocode + "%"));//like list.add(cb.between(root.get("frozenDate").as(Long.class), frozenDateStart, frozenDateEnd));//between and list.add(cb.greaterThanOrEqualTo(root.get("id").get("rcard").as(String.class), rCardStart));//大於等於 list.add(root.get("id").get("lotNo").as(String.class).in(lotNos));//in //ORDER BY packdate DESC,packtime DESC Predicate[] p = new Predicate[list.size()]; query.where(cb.and(list.toArray(p))); query.orderBy(cb.desc(root.get("packDate")),cb.desc(root.get("packTime"))); return query.getRestriction(); } });