我有一个实体如下
Class Person{
String id;
String name;
String numberOfHands;
}
Run Code Online (Sandbox Code Playgroud)
使用Spring Data Rest(Gosling Release Train),我可以指定
localhost/Person?sort=name,asc
Run Code Online (Sandbox Code Playgroud)
用于排序名称升序.现在,在我需要按numberOfHands降序排序并命名升序的情况下.我可以指定
localhost/Person?sort=numberOfHands,name,asc
Run Code Online (Sandbox Code Playgroud)
但是,我无法指定
localhost/Person?sort=numberOfHands,desc,name,asc
Run Code Online (Sandbox Code Playgroud)
有没有办法指定多个排序顺序?
谢谢!
我一直在尝试获取总行数并这样做,我使用了 JPA Criteria API,但它在Long count = em.createQuery(sc).getSingleResult();line处抛出错误并说java.lang.IllegalStateException: No criteria query roots were specified. 我做了一些研究,但无法缩小问题的范围。
这是我的代码片段;
@PersistenceContext
public EntityManager em;
......
public Page<UserDTO> findByCriteria(String filters, Pageable pageable) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<UserDTO> cq = cb.createQuery(UserDTO.class);
Root<UserDTO> iRoot = cq.from(UserDTO.class);
List<Predicate> predicates = new ArrayList<Predicate>();
if (StringUtils.isNotEmpty(filters)) {
predicates.add(cb.like(cb.lower(iRoot.<String>get("login")), "%" + filters.toLowerCase() + "%"));
}
Predicate[] predArray = new Predicate[predicates.size()];
predicates.toArray(predArray);
CriteriaQuery<Long> sc = cb.createQuery(Long.class);
sc.select(cb.count(iRoot));
sc.where(predArray);
Long count = em.createQuery(sc).getSingleResult();
cq.where(predArray);
List<Order> orders = new ArrayList<Order>(2); …Run Code Online (Sandbox Code Playgroud)