如何在Spring Data(JPA)派生查询中按多个属性进行排序?

2022-08-31 12:50:50

我正在查看此页面上给出的有关方法命名的示例(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.repositories),是否可以创建一个复杂的链方法名称,例如

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc

在他们给出的示例中,他们只对一个值执行 OrderBy。在上面的示例中,将是两个单独的值。ProgDateStartTime


答案 1

诀窍是简单地使用 direction 关键字和 来划分要排序的属性。因此,您可能想要在查询方法中如下所示:AscDesc

…OrderByProgDateAscStartTimeAsc

请注意,我们如何通过下一个属性来结束第一个属性定义,并继续使用下一个属性。Asc

一般来说,一旦方法名称超过一定的长度或复杂性,我们建议切换到基于查询。主要原因是客户端调用这些很长的方法很尴尬。您更愿意获得查询语言的全部功能以及一个大小合理的方法名称,该名称可能是更高级别的语言,以表达查询的意图。@Query@Query


答案 2

是的,应该是可能的:

试试这个:

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc(String programme, String director, Date progStart, Date progEnd);

我还没有测试代码,但根据我已经做过的事情,它应该可以工作。


推荐