【问题标题】:Slick implicit parameter 'tables' with generated tables带有生成表的光滑隐式参数“表”
【发布时间】:2017-05-14 08:36:25
【问题描述】:

简单版

导入和使用生成的 Slick 表的首选方式是什么?

详细版本和我尝试过的

我使用 Slick 3.1.1 代码生成从 MySQL (MariaDB) 架构生成 Tables.scala

Tables.scala 以此开头:

// AUTO-GENERATED Slick data model
/** Stand-alone Slick data model for immediate use */
object Tables extends {
    val profile = slick.driver.MySQLDriver
} with Tables

使用这些类的最佳方式是什么?根据Slick documentation

该文件包含一个对象表,可以从中导入代码以立即使用。 ...该文件还包含一个可用于蛋糕模式的特征表。

...我尝试了this example的变体

import Tables._
import Tables.profile.api._
import slick.jdbc.JdbcBackend

class Test(s: String)(implicit db: Database) {
    def exec[T](action: DBIO[T])(implicit db: Database): T =
            Await.result(db run action)
    def run: Unit = exec(((ATable filter (_.id)).result)
}
object Test {
    implicit val db = Database.forURL(url, user, password)
    new Test("")
}

无论我在哪里引用 ATable 类,都会出现编译错误:

找不到参数表的隐含值:表

我什至在Tables.scala 中都没有看到tables。如何获得使用我生成的 Slick 类所需的一切?

【问题讨论】:

  • 你在某处有“import kokellab.db.core.Tables”吗?
  • @WillisBlackburn 谢谢!为简单起见,我刚刚删除了包名称。固定。

标签: scala slick codegen slick-codegen


【解决方案1】:

我得到了这个例子:Tables._Tables.profile.api._ 只需要在类中导入隐式Database 可用。

import slick.jdbc.JdbcBackend

class Test(s: String)(implicit db: Database) {
    import Tables._
    import Tables.profile.api._

    def exec[T](action: DBIO[T])(implicit db: Database): T =
            Await.result(db run action)
    def run: Unit = exec(((ATable filter (_.id)).result)
}
object Test {
    implicit val db = Database.forURL(url, user, password)
    new Test("")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 2017-04-07
    • 2021-12-16
    • 1970-01-01
    • 2016-08-05
    • 2021-05-02
    • 1970-01-01
    • 2021-12-28
    相关资源
    最近更新 更多