首页 > 解决方案 > MySql 的 Slick Json 列支持

问题描述

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

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)

}

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

标签: mysqlscalaslickslick-3.0play-slick

解决方案


您可以使用 a在将其写入数据库时​​将其BaseColumnType转换为 String 并在从数据库读取时将其解析为:JSONJSON

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)

}

推荐阅读