2016-04-08 8 views
0

私がプレイスリックPlayframework 2.5スリック+ DI

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 

でplayframework 2.5を使用してプレイ公式で推奨される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) 
    //.... 
} 

Module.scala

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

application.conf私はslick.dbs.default.db.dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"を追加すると消えます

エラー上記の設定私はコードとエラーCaused by: java.lang.RuntimeException: driverClassName specified class 'com.mysql.jdbc.Driver' could not be loadedを得る

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" 

/私はDBのタイムアウト例外を代わりに取得します。

私の他のplay2.4プロジェクト(非DI)は同じ設定でサーバに接続でき、コンソールでサーバに接続できたので、私はDbの設定が正しいことを確認しています。

問題の原因はわかりません。どこが間違っていますか?

ありがとうございます。

+0

build.sbtファイルも投稿してください。 – marcospereira

+0

@marcospereiraが更新されました。 – suish

答えて

2

あなたはMySQLドライバの依存関係を追加する必要があります。このバージョン(最新)がOKであればまたはあなたが別のものを必要とするかどうかを確認、もちろん

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

を。

+0

ofc、そこにいる必要があります。愚かな質問に答えるためにありがとう。 – suish