Динамический запуск Plain SQL в Quill с использованием инфикса завершается с ошибкой синтаксиса запроса во время выполнения - PullRequest
0 голосов
/ 13 февраля 2020

Я хочу построить свой запрос простым SQL, а затем запустить его с помощью Quill, я использую оператор инфикса. Мой код выглядит следующим образом.

case class Employee(name: String, age: String, company_name: String)

case class Company(name: String, pin_code: String)

case class CombinedEmployee(employee_age: Int,
                      employee_name: Option[String],
                      company_name: String,
                      pin: Option[String])

val sql =    "SELECT t1.age AS employee_age, t1.name AS employee_name, t2.name AS company_name, t2.pin as pin FROM employee t1 JOIN company t2 ON t1.company_name = t2.name"

// это может быть все, что рассчитывается динамически.

def rawQuery = quote { (myQuery: String) =>
 infix"""$myQuery"""
 .as[Query[CombinedEmployee]]
 }

, и я звоню

    ctx.translate(rawQuery(lift(sql)))

, это печатает

        SELECT x.employee_age, x.employee_name, x.company_name, x.pin FROM ('SELECT t1.age AS employee_age, t1.name AS employee_name, t2.name AS company_name, t2.pin as pin FROM employee t1 JOIN company t2 ON t1.company_name = t2.name') AS x 

, что является неправильным синтаксисом, когда я выполнил это с использованием метода run, это не удалось. Правильно ли написано SQL? Если нет, есть ли другой способ запустить Plain SQL и смоделировать в классы дел ??

1 Ответ

0 голосов
/ 17 февраля 2020

Это можно решить, добавив # перед $

def rawQuery = quote { (myQuery: String) =>
 infix"""#$myQuery"""
 .as[Query[CombinedEmployee]]

}

...