Spring 数据 JDBC 带有订单参数的自定义查询不起作用

Spring Data JDBC customized Query with order Parmeter not working

我尝试使用自定义参数对我的自定义查询进行排序,如下所示:

@Query("select * from person where firstname = :name" + " order by :order")
List<Customer> findByFirstNameCustomQuery2(@Param("name") String name, Pageable page,
@Param("order") String order);

但它不起作用。

有人知道如何在@Query 中使用“order by”作为参数吗?

备注: 正如下面的回答,我创建了一个 github 存储库。你可以在这里找到它: https://github.com/kremerkp/spring-data-jdbc-pageable-h2.

CustomerRepository 有五个功能。 “findByLastName”是一个使用查询函数的完整示例(可排序和可分页)。

在我的实际项目中,我有一个查询非常复杂,无法与查询函数一起使用,因此我需要使用自定义查询来获取结果。

这种特殊情况无需自定义查询即可解决,只需使用 PageableSort 属性即可。您应该能够使用 Page 作为方法 return 类型,但由于错误 https://jira.spring.io/projects/DATAJDBC/issues/DATAJDBC-554 目前这是(从 Spring Data JDBC 2.0 .2.RELEASE) 不可能.

但是,您可以创建一个方法 returning a List,并向其传递一个 Pageable 对象:

List<Customer> findByFirstName(String name, Pageable page);

虽然方法 return 是 List,但仍应应用分页和排序,因此列表仅包含单个页面中的数据,并按要求排序:

repository.findByFirstName("Foo", 
  PageRequest.of(0, 1, Sort.by(Sort.Direction.ASC, "someSortField"));