【问题标题】:Spring JPA PageRequest ordering by a join columnSpring JPA PageRequest 按连接列排序
【发布时间】:2015-03-20 23:12:14
【问题描述】:

我正在使用 Spring PageRequest 按数据库中的列对自定义查询进行排序(排序)。

如果我正在执行自定义查询,例如:

 @Query( value = "select h from hunterhouse h join h.queens q where q.name = 'Computer Science'") 

不能按我要加入的表 q 中的列排序吗?

PageRequest request = new PageRequest(page, size, Sort.Direction.DESC, "q.region");

debug 显示为“按 h.q.region 排序”不正确,不能按连接列排序吗?

【问题讨论】:

    标签: spring jpa spring-data-jpa


    【解决方案1】:

    我遇到了同样的问题!此错误已在 Spring Data JPA 1.7.3 中修复 - 只需确保您的版本高于或等于 1.7.3!之后它将与queens.region一起使用

    弹簧来源:https://jira.spring.io/browse/DATAJPA-726

    【讨论】:

      【解决方案2】:

      您只需将要加入的完整路径放入排序表达式中。因此,您需要使用 queens.region,然后将其转换为 h.queens.region 并附加到您定义的 JPQL 查询中。

      【讨论】:

      • 我只能在一对一加入的情况下使用它。 Hunterhouse - Queens 是一对多的加入。每当我输入 "queens.region" 时,hibernate 甚至都不会将其插入到查询 "order by .desc" 中。
      • 我理解这种方法,但我的问题是排序数据来自 Swagger ......所以输入字段名称的人不知道它来自特定表并且排序是不工作。如果使用字段的完整名称(包括表格),那么排序就完美了。我找不到有关该主题的任何内容,我什至不知道要搜索什么...您能否建议一个指针?谢谢:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 2020-10-10
      • 2016-09-28
      • 1970-01-01
      • 2018-02-28
      • 2013-09-18
      相关资源
      最近更新 更多