【问题标题】:Playframework 2.5 Slick + DIPlayframework 2.5 Slick + DI
【发布时间】:2016-04-08 01:34:23
【问题描述】:

我正在使用带有 play slick 的 playframework 2.5

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.7"

libraryDependencies ++= Seq(
  cache,
  ws,
  "org.scalatestplus.play" %% "scalatestplus-play" % "1.5.0-RC1" % Test,
  "com.madgag.spongycastle" % "core" % "1.53.0.0",
  "org.flywaydb" %% "flyway-play" % "3.0.0",
  "com.typesafe.play" %% "play-slick" % "2.0.0",
  "com.typesafe.play" %% "play-slick-evolutions" % "2.0.0"
)

resolvers += "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases"


fork in run := false

并尝试使用 play 官方推荐的 DI 实现基本的 CRUD 类。

trait FooService {
  def findById(id: Long)

  final class FooTable(tag: Tag) extends Table[FooModel](tag,"foo"){
    def id = column[Long]("id")
    //....
  }
}

@Singleton
class FooServiceImpl @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) extends FooService with HasDatabaseConfigProvider[JdbcProfile] {
  import dbConfig.driver.api._

  private lazy val bars = TableQuery[FooTable]

  def findById(id: Long) = db.run(bars.filter{ x => x.id === id}.result)
  //....
}

模块.scala

override def configure() = {
  //....
  bind(classOf[FooService]).to(classOf[FooServiceImpl])
  //....
}

应用程序.conf

slick.dbs.default.driver = "slick.driver.MySQLDriver$"
slick.dbs.default.db.driver = com.mysql.jdbc.Driver
slick.dbs.default.db.url = "jdbc:mysql://localhost/foo"
slick.dbs.default.db.user = "root"
slick.dbs.default.db.password = "password"

我收到错误 Caused by: java.lang.RuntimeException: driverClassName specified class 'com.mysql.jdbc.Driver' could not be loaded 上面的代码/设置

如果我将slick.dbs.default.db.dataSourceClass = "slick.jdbc.DatabaseUrlDataSource" 添加到 application.conf,错误会消失,但我会得到 DB Timeout 异常。

由于我的其他 play2.4 项目(非 DI)可以连接到具有相同配置设置的服务器,并且我可以在控制台中连接到服务器,我非常确定 Db 配置是正确的。

我不知道是什么导致了这个问题。我哪里做错了?

提前致谢。

【问题讨论】:

  • 请也发布您的 build.sbt 文件。
  • @marcospereira 已更新。

标签: mysql scala playframework slick


【解决方案1】:

需要添加mysql驱动依赖:

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.38"

当然,请检查此版本(最新)是否正常,或者您是否需要其他版本。

【讨论】:

  • ofc,它必须在那里。感谢您回答愚蠢的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
相关资源
最近更新 更多