Подтвердить что ты не робот

Как сортировать по нескольким свойствам в производных запросах Spring Data (JPA)?

Я рассматриваю примеры, приведенные на этой странице (http://docs.spring.io/spring-data/jpa/docs/current/reference/html/jpa.repositories.html) о наименовании метода, возможно ли создать имя сложного цепного метода, например

findByProgrammeAndDirectorAndProgDateBetweenOrderByProgDateStartTimeAsc

В примере, который они приводят, они только делают OrderBy для одного значения. В приведенном выше примере ProgDate и StartTime будут два отдельных значения.

4b9b3361

Ответ 1

Трюк состоит в том, чтобы просто разграничить свойства, которые вы хотите отсортировать, используя ключевые слова направления Asc и Desc. Так что вы, вероятно, хотите в своем методе запроса, это что-то вроде:

…OrderByProgDateAscStartTimeAsc

Обратите внимание, как мы завершаем первое определение свойства Asc и продолжаем работу со следующим свойством.

Вообще говоря, мы рекомендуем переключиться на запросы @Query, как только имена методов превысят определенную длину или сложность. Основная причина заключается в том, что неудобно для клиентов называть эти очень длинные методы. С помощью @Query вы скорее получите полную мощность языка запросов плюс имя метода с разумным размером, которое может быть языка более высокого уровня, чтобы выразить намерение запроса.

Ответ 2

Да, это должно быть возможно:

Попробуйте следующее:

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

Я не тестировал код, но в соответствии с тем, что я уже сделал, он должен работать.