@Override @Transactional(readOnly = true) public Page<UserGroupCheck> findAllByPage(Pageable pageable, Long groupId, long total) { // TODO use setParameter String sql = USER_GROUP_CHECK_QUERY; String orderBy = ""; String sort = ""; Iterator<Order> i = pageable.getSort().iterator(); while (i.hasNext()) { Order order = i.next(); orderBy = order.getProperty(); sort = order.getDirection().name(); } sql = sql.replace(ORDER_BY, orderBy); sql = sql.replace(SORT, sort); Query query = entityManager.createNativeQuery(sql); query.setParameter(GROUP_ID, groupId); query.setParameter(LIMIT, pageable.getPageSize()); query.setParameter(OFFSET, pageable.getOffset()); List<UserGroupCheck> result = JpaUtil.getResultList(query, UserGroupCheck.class); Page<UserGroupCheck> page = new PageImpl<>(result, pageable, total); return page; }
protected String orderByExpression(Sort sort) { StringBuilder sb = new StringBuilder(); for (Iterator<Order> it = sort.iterator(); it.hasNext(); ) { Order order = it.next(); sb.append(order.getProperty()).append(' ').append(order.getDirection()); if (it.hasNext()) sb.append(COMMA); } return sb.toString(); }
protected Map<String, Object> applySorting(Map<String, Object> parameter, Sort sort) { if (sort == null) return parameter; StringBuilder sb = new StringBuilder(); for (Order order : sort) { sb.append("," + order.getProperty() + " " + order.getDirection()); } parameter.put(ORDER_STRING, sb.substring(1)); return parameter; }
/** * Converts the given {@link org.springframework.data.domain.Sort} into {@link SortField}s. * * @param sort the {@link org.springframework.data.domain.Sort} instance to be transformed into * JOOQ {@link SortField}s. * @return the list of {@link SortField}s. */ public static List<SortField<?>> toOrders(Sort sort) { if (sort == null) { return Collections.emptyList(); } List<SortField<?>> orders = new ArrayList<SortField<?>>(); for (Order order : sort) { orders.add( field(order.getProperty()) .sort(order.getDirection() == Direction.ASC ? SortOrder.ASC : SortOrder.DESC)); } return orders; }
private static String toJpaDirection(Order order) { return order.getDirection().name().toLowerCase(Locale.US); }