使用 MySql 的圆滑 Json 列支持

Slick Json Column Support with MySql

我在 MySql 中有一个 Json 类型列,我正在使用 Scala 和 Slick。 如何通过 Slick 为 Json 列提供支持。

class SampleTable(tag: Tag) extends Table[(String, ??)](tag, "test")  {

  override def * : ProvenShape[NodeReference] = (name, data)

  def name: Rep[String] = column[String]("name", O.PrimaryKey)
  def Data: Rep[??] = column[??]("data", O.PrimaryKey)

}

任何帮助将不胜感激。 提前致谢

您可以使用 BaseColumnTypeJSON 转换为字符串,同时将其写入数据库并在从数据库读取时将其解析为 JSON:

import play.api.libs.json.{JsValue, Json}

private implicit val jsValueMappedColumnType: BaseColumnType[JsValue] =
  MappedColumnType.base[JsValue, String](Json.stringify, Json.parse)

class SampleTable(tag: Tag) extends Table[(String, JsValue)](tag, "test") {

  def name: Rep[String] = column[String]("name", O.PrimaryKey)

  def data: Rep[JsValue] = column[JsValue]("data", O.PrimaryKey)

  def * = (name, data)

}