Scala Slick 3.0.0 奇怪错误

3

在尝试为不同的环境使用不同的驱动程序时,我遇到了一些问题:

Error:(44, 39) value schema is not a member of slick.lifted.TableQuery[MyserviceTests.this.myService.MyTable]
      myTableQuery.schema.create,

我按照这个教程实现了一个多数据库通信层:

http://www.typesafe.com/activator/template/slick-multidb

如何解决这个问题?我正在使用Slick 3.0.0。


1
该模板实际上使用的是Slick 2.x https://github.com/typesafehub/activator-slick-multidb/blob/master/build.sbt#L10,而Slick 3.0则在一个单独的分支中实现... - sap1ens
1
是的,我知道这个,并且我正在使用来自3.0.0 Slick库的相应导入。奇怪的是,也找不到ddl方法,而Slick文档建议在TableQuery上使用schema,而GitHub源则使用schema。 - joesan
1
嗯,奇怪,例如这个片段在我使用Slick 3.0时可以工作 https://gist.github.com/sap1ens/37001f5cf3ac6161a4e5 - sap1ens
你能否发布导致错误的实际代码? - sap1ens
1
以下是链接地址:https://groups.google.com/forum/#!topic/scalaquery/FgRuPhyuGpc - joesan
2个回答

6

sparkr发布的回答对我有用。

导入 api._ 驱动程序将正确的隐式转换包含在范围内。

因此,如果您可以使用静态驱动程序绑定,则可以使用以下导入解决问题:

import slick.driver.H2Driver.api._

或者,如果您需要代码与多个驱动程序一起工作,则可以动态导入。

import scala.reflect.runtime.universe
val rtm = universe.runtimeMirror(getClass.getClassLoader)
val obj = rtm.reflectModule(rtm.staticModule("slick.driver.H2Driver"))

val driver = obj.instance.asInstanceOf[slick.driver.JdbcDriver]
import driver.api._

2
好的,我找到了问题所在。以下是解决问题的完整源代码。 https://groups.google.com/forum/#!topic/scalaquery/FgRuPhyuGpc 你可以看到在我的测试中,我在导入中使用了H2Driver,并在实际服务类中使用了JdbcProfile导入,这导致了问题。我只需要在测试类中执行以下操作即可:
    //import slick.driver.H2Driver.api._

    val db = Database.forURL("jdbc:h2:mem:assetConfigDb;DATABASE_TO_UPPER=false;DB_CLOSE_DELAY=-1", driver="org.h2.Driver")
    val myService = MyService.apply(DBConfig(db, driver = slick.driver.H2Driver))

    import myService.driverProfile.api._

注意导入,这非常重要!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接