Slick Поддержка колонок Json с MySql - PullRequest
0 голосов
/ 18 января 2019

У меня есть столбец типа Json в MySql, и я использую Scala с Slick. Как я могу предоставить поддержку Json Column через Slick.

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)

}

Любая помощь будет оценена. Заранее спасибо

1 Ответ

0 голосов
/ 18 января 2019

Вы можете использовать BaseColumnType для преобразования вашего JSON в строку при записи его в базу данных и анализа его в 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)

  }
...