我正在尝试在基于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);
一切都运行良好。但是现在我希望按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();
}
不幸的是,我不能使用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);
以下异常被抛出:
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property CHAR found for type MyEntity!