我的数据库中的表有一个类型为json的列。我想知道,当我在Slick中定义表时,我应该使用哪种数据类型? 目前,对于特定列我使用Blob,因为我发现它建议here。 我很想知道是否有可能使用json库类提供的Play框架(play.libs.json)?如果是这样,怎么样?我需要隐式映射器吗?
答案 0 :(得分:1)
Slick提供了Slick不支持的custom data type mapper。 在我的例子中:将Json作为字符串保存到数据库中,并使用JValue作为代码保存(我正在使用json4s):
object JsonMapper{
import driver.api._
implicit val jsonMapper = MappedColumnType.base[JValue, String](
{ json => write(framesType) /* json writer */ },
{ str =>parse(str) /*json parser */ }
)
}
import JsonMapper._
case class Info(id:Int, json:JValue)
class DBTable(tag:Tag) extends Table[Info](tag, "info"){
val id = column[Int]("id")
val json = column[JValue]("json")
def * = (id ,json) <> (Info.tupled, Info.unapply)
}
我不确定这会对您的情况有效。但这是一种在Slick中映射任何自定义数据类型的方法。