【问题标题】:Running Plain SQL dynamically in Quill using infix fails with wrong query syntax during runtime在运行时使用中缀在 Quill 中动态运行普通 SQL 失败,查询语法错误
【发布时间】:2020-05-28 17:59:49
【问题描述】:

我想用纯 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 的方式是否正确?如果不是,是否有其他方法可以将普通 SQL 和模型运行到案例类中??

【问题讨论】:

    标签: sql translate rawsql quill.io


    【解决方案1】:

    这可以通过在$ 之前添加# 来解决

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

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 2020-04-30
      相关资源
      最近更新 更多