scala - 如何在运行时使用 quill 定义表名

标签 scala quill.io

我是 quill 的新手,我试图在运行时定义一个表,但我收到一个编译错误。有什么解决方法吗?或者它只是不可能使用 quill ?
代码示例是:

case class ExampleCaseClass(id : String, version : String)
class Example (db: CassandraAsyncContext[SnakeCase] , table : String ) {
    import db._

    def selectByVarId = quote {
        (id: String, version: String) =>
            querySchema[ExampleCaseClass](table).filter(example => (example.id == id) && (example.version == version))
    }
}

和错误:
Error:(114, 36) Tree Error:(124, 25) Tree 'Example.this.db.querySchema[***.ExampleCaseClass](Example.this.table)' can't be parsed to 'Ast'
    def selectById = quote {

最佳答案

从羽毛笔 3.+ 使用 dynamicQuerySchema[Person]("Person") dynamic-query-api

    import io.getquill.{Literal, MirrorSqlDialect, SqlMirrorContext}
    import java.time.LocalDate

    final case class PersonId(value: Int) extends AnyVal

    final case class Person(
      id: PersonId,
      firstName: String,
      lastName: String,
      birthDate: LocalDate) 

    val context = new SqlMirrorContext(MirrorSqlDialect, Literal)
    
    val person = "Person"
    val person2 = "Person2"

    import context._
    
    val personContext = dynamicQuerySchema[Person](person)
    val person2Context = dynamicQuerySchema[Person](person2)
    val query = translate(personContext.filter(_.id == lift(PersonId(1))))
    val query2 = translate(person2Context.filter(_.id == lift(PersonId(1))))
    println(s"$query")
    println(s"$query2")
输出
SELECT v0.id, v0.firstName, v0.lastName, v0.birthDate, v0.addressId FROM Person v0 WHERE v0.id = 1
SELECT v0.id, v0.firstName, v0.lastName, v0.birthDate, v0.addressId FROM Person2 v0 WHERE v0.id = 1

关于scala - 如何在运行时使用 quill 定义表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44353397/

相关文章:

java - 如何从 java/scala 中的 xml 字符串中提取字段

Scala:Context.eval 中的代码可以引用什么?

scala - 隐式宏和黑盒宏

json - 在模式 rdd 中分解 json 数组

scala - Spark 选择并添加带有别名的列

scala - Quill onconflict更新多个值

scala - Spark 将 RDD 拆分为 block 并连接

mysql - 在 scala 中编写脚本以连接两个 mysql 表并创建一个对象(quill)

scala - 如何使用 Scala Quill.io 库编写泛型函数