获取自定义光滑配置文件

时间:2017-12-10 11:23:00

标签: postgresql scala slick

林'当我尝试使用自己的自定义配置文件时,获得异常。我想使用它的原因是因为我想在我的postgresql数据库中保留JSON。因此,我使用pg-slick。 例外说: slick.jdbc.PostgresProfile $无法强制转换为util.ExtendedPostgresProfile。

这是我的ExtendedPostgresProfile代码:

package util

import com.github.tminglei.slickpg._

trait ExtendedPostgresProfile extends ExPostgresProfile with PgPlayJsonSupport {

    override val api = new API with PlayJsonImplicits

    override def pgjson: String = "jsonb"
}

object ExtendedPostgresProfile extends ExtendedPostgresProfile

这是我的DAO课程:

class ActivityDAO @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) {

    private val dbConfig = dbConfigProvider.get[ExtendedPostgresProfile]

    import dbConfig._
    import profile.api._

    private class ActivityTable(tag: Tag) extends Table[Activity](tag, "activity") {

        def id: Rep[Long] = column[Long]("id", O.PrimaryKey, O.AutoInc)

        def activity: Rep[JsValue] = column[JsValue]("activity")

        def atTime: Rep[Timestamp] = column[Timestamp]("at_time")

        def activityTypeId: Rep[Int] = column[Int]("activiry_type_id")

        def userId: Rep[Long] = column[Long]("user_id")

        override def * : ProvenShape[Activity] =
            (id.?, activity, atTime.?, activityTypeId, userId.?) <> ((Activity.apply _).tupled, Activity.unapply)
    }

    private val activities = TableQuery[ActivityTable]

    def add(activity: Activity): Future[Long] = {

        val query = activities returning activities.map(_.id)

        db.run(query += activity)
    }

    def filter(userId: Long): Future[Seq[Activity]] = {

        db.run(activities.filter(_.userId === userId).result)
    }
}

我已经尝试过寻找自己的答案,但没有多少运气。

1 个答案:

答案 0 :(得分:1)

您的自定义配置文件是否按照Database Configuration部分的建议配置在Play-slick配置中?即它是util.ExtendedPostgresProfile$还是slick.jdbc.PostgresProfile$