流畅的 PostgreSQL 集成

Slick PostgreSQL Integration

我是 scala 的新手,我正在尝试将 PostgreSQL 数据库集成到用 scala.I 编写的 Lagom 应用程序中,我正在尝试利用 Lagom 的持久性 API。 Lagom 内置了对 slick 的支持。

我的table有3个字段id类型为int,name类型为string,data类型为jsonb

由于 Slick 不支持 json 格式,我正在尝试使用 slick-pg .

下面是我的实现

我的自定义配置文件class

import com.github.tminglei.slickpg.{ExPostgresProfile, PgPlayJsonSupport}
import play.api.libs.json.JsValue
import slick.basic.Capability
import slick.jdbc.{JdbcCapabilities, PostgresProfile}

trait CustomPostgresProfile extends ExPostgresProfile with PgPlayJsonSupport {
  def pgjson = "jsonb"

  override protected def computeCapabilities: Set[Capability] =
    super.computeCapabilities + JdbcCapabilities.insertOrUpdate

  override val api = PostgresJsonSupportAPI

  object PostgresJsonSupportAPI extends API with JsonImplicits {}
}

object CustomPostgresProfile extends PostgresProfile

我的table定义

import com.custom.persistence.profile.CustomPostgresProfile.api._
import play.api.libs.json._


case class CustomDataEntity(id:int,name: String, data: JsValue)

object CustomDataTableDef {
  val data = TableQuery[CustomDataTableDef]
}
class CustomDataTableDef(tag: Tag) extends Table[CustomDataEntity](tag, "custom"){
  

  def id = column[Int]("id", O.PrimaryKey)

  def name = column[String]("name")
  def data = column[JsValue]("data")

  override def * =
    (id,name,data) <> (CustomDataEntity.tupled,CustomDataEntity.unapply(_))

}

当我尝试编译代码时,出现以下 2 个错误

could not find implicit value for parameter tt: slick.ast.TypedType[play.api.libs.json.JsValue]
[error]   def data = column[JsValue]("data")

Cannot resolve symbol <>

请帮我解决这个问题

您的 object CustomPostgresProfile 扩展了 PostgresProfile 而不是 CustomPostgresProfile。如果你解决了这个问题,它就会起作用。