光滑的隐含参数'表'使用生成的表

时间:2016-12-30 01:36:55

标签: scala slick codegen slick-codegen

简单版

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

详细版本和我尝试过的内容

我使用Slick 3.1.1 codegen从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

使用这些课程的最佳方法是什么?根据{{​​3}}:

  

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

...我已在Slick documentation

尝试了各种变体
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,我都会遇到编译错误:

could not find implicit value for parameter tables: Tables

我甚至没有在tables中看到Tables.scala。如何在范围内获得我使用生成的Slick类的所有内容?

1 个答案:

答案 0 :(得分:0)

我得到了一个工作示例: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("")
}