Scala Slick 3.0.0 奇怪的错误
Scala Slick 3.0.0 Strange Error
我在尝试为不同的环境使用不同的驱动程序时遇到了一些问题:
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
好的,我找到问题所在了。这是我的问题的完整源代码。
https://groups.google.com/forum/#!topic/scalaquery/FgRuPhyuGpc
正如您在我的测试中看到的那样,我在导入中使用了 H2Driver 并在实际服务中使用了 JdbcProfile 导入 class,这导致了问题。我所要做的就是在我的测试中执行以下操作 class:
//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._
注意导入,因为这非常重要!
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._
我在尝试为不同的环境使用不同的驱动程序时遇到了一些问题:
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
好的,我找到问题所在了。这是我的问题的完整源代码。
https://groups.google.com/forum/#!topic/scalaquery/FgRuPhyuGpc
正如您在我的测试中看到的那样,我在导入中使用了 H2Driver 并在实际服务中使用了 JdbcProfile 导入 class,这导致了问题。我所要做的就是在我的测试中执行以下操作 class:
//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._
注意导入,因为这非常重要!
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._