gpt4 book ai didi

带有顺序参数的Spring Data JDBC自定义查询不起作用

转载 作者:行者123 更新时间:2023-12-04 03:59:31 29 4
gpt4 key购买 nike

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

@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 作为方法返回类型,但由于错误 https://jira.spring.io/projects/DATAJDBC/issues/DATAJDBC-554目前(从 Spring Data JDBC 2.0.2.RELEASE 开始)这是不可能的。

但是,您可以创建一个返回 List 的方法,并向它传递一个 Pageable 对象:

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

虽然该方法返回一个 List,但仍应应用分页和排序,因此该列表仅包含来自单个页面的数据,并按要求排序:

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

关于带有顺序参数的Spring Data JDBC自定义查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63285038/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com