2016-05-08 18 views
2

問題:打2.5 DB問題 - 使用依賴注入

我對着下面的問題中發揮2.5,而編譯。

您在範圍中沒有隱式應用程序。如果您想 將當前運行的應用程序帶入上下文中,請使用 依賴注入。

獲取問題在線 - DB.withConnection {^

代碼片段:

object User { 
    def getId(emailid: String): Option[Int] = { 
    DB.withConnection { implicit c => 
     SQL("select id from user where email = {email}").on(
     'email -> emailid).as(SqlParser.scalar[Int].singleOpt) 
    } 
    } 
} 

如何解決這個問題?

回答

3

我想你遇到的問題是這樣的:

You do not have an implicit Application in scope: PlayFramework with Oracle

有嘗試導入「play.ap」包i.Play.current」,即添加在你的代碼文件中的以下

import play.api.Play.current 

有好運氣

+3

雖然現在解決了這個問題,但它將導致2.5中的棄用警告。一旦你升級到2.6,你將被迫使用依賴注入。 – rethab

+1

有人可以解釋如何使用依賴注入完成這項工作嗎? – schub

4

User設爲一個類並將其注入需要的位置。

class User @Inject() (db: Database) { ..}

而在你的控制器: class MyController @Inject() (user: User) extends Controller { // .. user.getId // .. }

在這裏閱讀更多:https://www.playframework.com/documentation/2.5.x/ScalaDatabase

+0

如何實例化性狀的用戶類作爲隱含懶惰VAL? – Way

+0

你可以將用戶定義爲一個'def'並且在子類中有實際的值。 – rethab