Фильтровать и сортировать по производным свойствам в Spring Data REST [duplicate]

function replaceAll(str, find, replace) {
  var i = str.indexOf(find);
  if (i > -1){
    str = str.replace(find, replace); 
    i = i + replace.length;
    var st2 = str.substring(i);
    if(st2.indexOf(find) > -1){
      str = str.substring(0,i) + replaceAll(st2, find, replace);
    }       
  }
  return str;
}
3
задан Neil Stockton 10 May 2016 в 15:00
поделиться

1 ответ

Проблема заключается в том, что сортировка PageRequest Spring Data выполняется на уровне базы данных путем формирования предложения ORDER BY.

Вы могли бы создать столбец @Formula, например

@Entity
public class Game {
...
     // rewrite your logic here in HQL
     @Formula("case when startTime >= endTime then 'FINISHED' ... end")
     private String status;

. Тогда можно будет использовать новый столбец в порядке сортировки, поскольку все, что вы напишете в формуле, будет передано Предложение ORDER BY.

6
ответ дан ike3 20 August 2018 в 20:41
поделиться
  • 1
    Я принял ответ, поскольку это, вероятно, единственный способ, но очень сложно сделать всю эту логику в 1 строке HQL. – Wim Deblauwe 11 May 2016 в 06:28
  • 2
    Вы также можете создать представление базы данных с вычисленным столбцом и сопоставить объект с представлением – ike3 11 May 2016 в 09:19
Другие вопросы по тегам:

Похожие вопросы: