我正在尝试将所有的implicits移动到一个公共对象,以便我可以在所有DAO类中使用它们,但我无法正确设置它。
到目前为止,我有这个:
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
}
)
}
我收到此错误:
not found: object driver
答案 0 :(得分:1)
在您的DAO中,它取自扩展特征HasDatabaseConfigProvider
。
只需将您的对话放入trait
然后(trait DbImplicits
),这些对话需要与HasDatabaseConfigProvider
一起混合或扩展。{/ p>
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
特有的。