2017-01-04 3 views
0

私は全てのimplicitsを共通のオブジェクトに移動しようとしているので、すべてのDAOクラスで使用できますが、正しく設定することはできません。すべてのimplicitsを共通オブジェクトに移動

私はこれまでのところ、これを持っている:

package com.example.dao 

import java.sql.Timestamp 
import java.time.Instant 

import play.api.db.slick.DatabaseConfigProvider 
import play.api.db.slick.HasDatabaseConfigProvider 
import slick.driver.JdbcProfile 

object DbImplicits { 
    import driver.api._ 
    implicit val dateColumnType = MappedColumnType.base[Instant, Timestamp](
    i => Timestamp.from(i), 
    ts => { 
     ts.toInstant 

    } 
) 
} 

が、私はこのエラーを取得しています:あなたのDAOで

not found: object driver 
+1

は、私には理にかなって:私はそう...どこでもオブジェクト「ドライバ」を参照していない私はScalaのコンパイラだった場合、私はあまりにも文句を言うでしょう:) – Dima

+0

で私のDAO私はそれも表示されませんが、コンパイルされます。 – Blankman

+0

あなたのDAOで何かが違っていなければなりません:/それを見ていないものを推測するのは難しいです。 – Dima

答えて

1

は、それが拡張した形質HasDatabaseConfigProviderから取られています。

あなたの会話をtraitに入れてください(trait DbImplicits)。一緒に混在する必要がありますか、またはHasDatabaseConfigProviderを拡張する必要があります。

trait DbImplicits { self: HasDatabaseConfigProvider[JdbcProfile] => 
    import self.driver._ 

    implicit val dateColumnType = MappedColumnType.base[Instant, Timestamp](
     i => Timestamp.from(i), 
     ts => { 
      ts.toInstant 
     } 
    ) 
} 

その後、このようにそれを使用します。

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

    // your further code comes here 
} 

このすべてが種類の特定play-slickにあります。

私も、元の答えを更新:https://stackoverflow.com/a/41437295/2239369

関連する問題