运行 Plain SQL 在 Quill 中动态使用中缀在运行时失败,查询语法错误
Running Plain SQL dynamically in Quill using infix fails with wrong query syntax during runtime
我想用普通 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
方法执行它时失败了。
plain SQL 的写法对吗??如果不是,是否有不同的方法 运行 Plain SQL 和模型 类 ??
这可以通过在$
之前添加一个#
来解决
def rawQuery = quote { (myQuery: String) =>
infix"""#$myQuery"""
.as[Query[CombinedEmployee]]
}
我想用普通 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
方法执行它时失败了。
plain SQL 的写法对吗??如果不是,是否有不同的方法 运行 Plain SQL 和模型 类 ??
这可以通过在$
#
来解决
def rawQuery = quote { (myQuery: String) =>
infix"""#$myQuery"""
.as[Query[CombinedEmployee]]
}