当前位置: 首页 > 知识库问答 >
问题:

Spring数据使用排序不在最后

赖星驰
2023-03-14

我能在表达式末尾不给出排序参数吗?因为我需要在over()函数中使用sort参数。

例子:

@Query(value = "...?2...over(?4)...?1...?3")
myMethod(int a,int b,int c,Sort sort);

或sort inside over的表达式:,-#sort\n,#{#sort}。。

我仍然得到:

JAVAlang.IllegalArgumentException:方法公共抽象java的查询验证失败。整型。。。方法的名称。。(int,int,int,org.springframework.data.domain.Sort)!

共有1个答案

长孙绍辉
2023-03-14

Sort类型的参数通过Spring Data JPA进行特殊处理。

即使不是这样,您试图实现的目标也无法通过简单的绑定参数实现,因为SQL允许在这些地方使用绑定参数。

根据你想要实现的目标,你可以做以下事情:

@Query("select .... over(... order by CASE ?1 WHEN "first THEN first
     WHEN 'last' THEN last
     END")
public Something method(String columnNameForSorting)

假设您有列firstlast要在它们之间切换以进行排序。

有关CASE表达式的更多信息,标准SQL替代Oracle DECODE

 类似资料:
  • 我目前正在使用带有Spring Data commons 1.9.1和Spring JPA 1.7.1的JpaSort。我需要使用QueryDSL,因为JPA不允许为空值定义排序。 这是我的存储库 我在我的控制器中这样做: 这就是我对JPA的看法: 这是我为QueryDSL更改的内容: 然而,似乎什么都没有得到整理。我已经启用了调试日志记录,我看到了这一点: 如果我将其更改为: 然后,按我的“数据

  • 我使用的是Spring数据JpaRepository,我发现它非常容易使用。我实际上需要所有这些功能——分页、排序、过滤。不幸的是,有一件令人讨厌的事情似乎迫使我退回到普通JPA的使用上来。 我需要按关联集合的大小订购。例如,我有: 我必须按bes排序。size() 是否有办法以某种方式自定义排序,仍然利用分页、过滤和其他Spring Data的强大功能?

  • 我试图指定一个用注释的存储库方法和一个带有对象的Pagable: 编辑1:此存储库正在扩展分页和排序存储库。 对象使用以下方法签名指定: 但生成的输出查询没有排序选项,例如: ...在我期待的时候: 这里有人遇到过这样的问题吗?我使用的是Spring Boot 1.5。x。

  • 看起来像个虫子。排序对于简单的搜索非常有效,但对于滚动则不起作用。我尝试这样做: 之后: 运行时,应用程序显示: 搜索: |调试o.s.d.elasticsearch。果心查询:937{“from”:0,“size”:5,“QUERY”:{“constant\u score”:{“filter”:{…跳过…},“boost”:1.0}},“version”:true,“\u source”:{“i

  • 问题内容: 我正在尝试在Spring数据存储库中定义一个方法,以按日期排序获取表上的最后一条记录。这是我的实体: 这是我的存储库: 如果我尝试使用启动项目,则会收到下一个错误: 原因:org.springframework.data.mapping.PropertyReferenceException:未找到类型为Date的属性desc!遍历的路径:News.publicationDate。 如果

  • 我是相当新的Spring和MongoDB,并有一个问题,从我的MongoDB拉数据。我试图获得相当大的数据量,并收到以下异常: 执行器错误:操作失败:排序操作使用超过最大33554432字节的RAM。添加索引,或指定一个较小的限制。;嵌套异常是com.mongodb.MongoExc0019: Execator错误:操作失败:排序操作使用超过内存的最大33554432字节。添加索引,或指定较小的限