如何在 Scala Slick 中映射一个 Map 对象

How to map a Map Object in Scala Slick

我想在我的 Scala 项目中使用 Scala Slick 作为 FRM。我有以下案例 class 映射到 table.

case class Person(name: String, pairs: Map[String, String])

如何将这种情况 class 映射到 Slick?

class Person(tag: Tag) extends Table[(String, Double)](tag, "PERSON") {
  def name = column[String]("NAME", O.PrimaryKey)
  ???
  def * = (name, ???)
}
val person = TableQuery[Person]

传统上,在关系数据库中,键值对可以存储为单独的 table:

类似于:

CREATE TABLE person_pairs (person_id LONG, key TEXT, value TEXT)

类似的方法适用于序列和其他结构。

但是,如果您使用的是 postgres,则可以使用 slick-pg 扩展库来使用 hstore 列。这会将您的 hstore(基本上是一组键值对)映射到一个 Map,这就是您要查找的内容