我试图在基于 Spring 4.1.1.RELEASE 和 Hibernate 4.2.16.Final 的 Java 应用程序中实现分页。
我有以下代码:
PageRequest pageRequest = new PageRequest(pageNumber, pageSize, new Sort(new Order(Direction.DESC, "name"))
Page page = myRepository.findAll(specification, pageRequest);
Run Code Online (Sandbox Code Playgroud)
一切正常。但是现在我想按 sql 函数值排序,例如:ORDER BY CHAR_LENGTH(name)。
当我在 中输入这样的子句时,它完美地工作@org.springframework.data.jpa.repository.Query,例如:
public class MyRepository {
@Query("select e from MyEntity e order by CHAR_LENGTH(e.name)")
public List<MyEntity> findAllOrderedByNameLength();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我无法使用 PageRequest 来做到这一点。当我将:ORDER BY CHAR_LENGTH(name)作为属性传递给 PageRequest 时:
PageRequest pageRequest = new PageRequest(pageNumber, pageSize, new Sort(new Order(Direction.DESC, "ORDER BY CHAR_LENGTH(name)"))
Page page = myRepository.findAll(specification, pageRequest);
Run Code Online (Sandbox Code Playgroud)
抛出以下异常:
Caused …Run Code Online (Sandbox Code Playgroud)