【问题标题】:Slick Json Column Support with MySqlMySql 的 Slick Json 列支持
【发布时间】:2019-06-12 14:19:50
【问题描述】:

我在 MySql 中有一个 Json 类型的列,我正在使用带有 Slick 的 Scala。 如何通过 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)

}

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

【问题讨论】:

    标签: mysql scala slick slick-3.0 play-slick


    【解决方案1】:

    您可以使用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)
    
    }
    

    【讨论】:

    • 我在Mysql中有一个JSON类型的列
    • 在我的回答中,我使用了 scala Json 类,但您可以以同样的方式使用 java one (JSON)。重要的是在将 json 写入数据库时​​将其写入字符串,并在从数据库读取时从字符串中解析它。这可能独立于您的 JSON 库
    猜你喜欢
    • 2023-03-23
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2011-06-09
    相关资源
    最近更新 更多