2015-09-30 68 views
0

在使用Play和Slick最新版本2.4.x和3.0.3分別定義一個簡單的普通SQL DAO的爭鬥中。我有以下幾點:未指定的值參數:dbConfigProvider:DatabaseConfigProvider

import javax.inject.Inject 
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider} 
import slick.driver.JdbcProfile 
import slick.driver.PostgresDriver.api._ 
import slick.lifted.TableQuery 

import models.Tables._ 

class BaseDao @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] { 
    import driver.api._ 

    val fundQuery = TableQuery[Fund] 
} 

object BaseDao extends BaseDao { /// <<<<<<<<<< Error here 
    // empty 
} 

我上線object BaseDao ...錯誤Unspecified value parameters: dbConfigProvider: DatabaseConfigProvider,無法找到如何解決此問題的語法該用例是真正的新給我,有中沒有類似的定義實例等

回答

1

你的類與構造函數的參數定義:

class BaseDao @Inject() (protected val dbConfigProvider: DatabaseConfigProvider) extends HasDatabaseConfigProvider[JdbcProfile] { ... } 
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

所以,錯誤提示,您需要提供一個DatabaseConfigProvider的實例構建對象時:

val myDatabaseConfigProvider: DatabaseConfigProvider = ... 

object BaseDao extends BaseDao(myDatabaseConfigProvider) { ... } 
+0

感謝但DatabaseConfigProvider是通過Play Slick注入的,所以我需要注入某處。基本上真正的答案在於你提供的不完整的「= ...」。 –

+1

@GiovanniAzua嗯,似乎使用'@ Inject'與對象不是(當前)可行 - 請參閱[這個問題的答案](http://stackoverflow.com/questions/31198534/how-plugin-works-例如,用注入和對象代替遊戲中的課程2-4)。建議的解決方法似乎是使用類而不是'@Singleton'註釋。 – Shadowlands

+0

沒有必要創建對象BaseDao,而是您可以創建類Singleton並注入控制器。 Guice負責創建類的一個實例並在運行時注入它。 – Bhavya