0

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

我的表有 3 个字段 id 类型为 int、名称类型为字符串、数据类型为 jsonb

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

下面是我的实现

我的自定义配置文件类

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

我的表定义

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 <>

请帮我解决这个问题

4

1 回答 1

1

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

于 2020-07-27T09:59:20.830 回答