java .lang.IllegalStateException: Состав монады не может быть выражен с помощью аппликативных объединений. Неправильное выражение - PullRequest
0 голосов
/ 10 февраля 2020

Я делаю сортировку по нескольким столбцам в соединенных таблицах, где столбец сортировки может существовать в любой из объединенных таблиц. Столбец может быть любым динамическим столбцом c, который представлен списком -> sortBys. Вот минимальный воспроизводимый пример.

 case class Employee(name: String, age: Int, company_name: String)
 case class Company(name: String, address: String)


val sortBys = List("name", "company_name", "age")


private def dynamicSort(employeeQuery: DynamicQuery[(Employee, Company)],
                  sortBy: String): DynamicQuery[(Employee, Company)] = {
sortBy match {
  case "name" => employeeQuery.sortBy(_._1.name)(Ord.asc)
  case "age" => employeeQuery.sortBy(_._1.age)(Ord.desc)
  case "company_name" => employeeQuery.sortBy(_._2.name)(Ord.asc)
 }
}

 val sortedEmployeeQuery = sortBys.foldRight(employeeQ) {
 case (sortBy, query) => dynamicSort(query, sortBy)
  }

Когда я пытаюсь напечатать вышеупомянутый запрос, я получаю эту ошибку времени выполнения

java.lang.IllegalStateException: The monad composition can't be expressed using applicative joins. Faulty expression: 'x1.name'. Free variables: 'List(x1)'., Faulty expression: 'x1.name'. Free variables: 'List(x1)'., Faulty expression: 'x1.age'. Free variables: 'List(x1)'., Faulty expression: 'x1.company_name'. Free variables: 'List(x1)'., Faulty expression: 'x2.name'. Free variables: 'List(x2)'., Faulty expression: 'x2.address'. Free variables: 'List(x2)'., Faulty expression: 'x2.name'. Free variables: 'List(x2)’. Это неправильный способ выполнения Dynami c мульти сортировка ?? Однако сортировка по одному столбцу работает без проблем. Поддерживает ли quill динамическую c мультисортировку? Может кто-нибудь, пожалуйста, помогите ?? Заранее спасибо. Обратите внимание, что мне может потребоваться выполнить мультисортировку по нескольким столбцам AS C и нескольким столбцам в DES C, который является чисто динамическим c

@ getquill / keepers

...