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”是一个使用查询函数的完整示例(可排序和可分页)。
在我的实际项目中,我有一个查询非常复杂,无法与查询函数一起使用,因此我需要使用自定义查询来获取结果。
这种特殊情况无需自定义查询即可解决,只需使用 Pageable
的 Sort
属性即可。您应该能够使用 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"));
我尝试使用自定义参数对我的自定义查询进行排序,如下所示:
@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”是一个使用查询函数的完整示例(可排序和可分页)。
在我的实际项目中,我有一个查询非常复杂,无法与查询函数一起使用,因此我需要使用自定义查询来获取结果。
这种特殊情况无需自定义查询即可解决,只需使用 Pageable
的 Sort
属性即可。您应该能够使用 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"));