浮动的自定义列

时间:2017-02-16 06:39:34

标签: slick

我是否可以在Slick中设置自定义列(我希望将案例类作为代表JSON的列。)

case class Segment(isNative: Option[Boolean], origin: Option[List[String]],whitelist: Option[Whitelist])

def seg = column[Option[Segment]]("segment")

1 个答案:

答案 0 :(得分:1)

当然可以 - 这就是自定义映射的问题。如果您想将String存储在db:

中,它的外观如下
  implicit val segmentColumnType = MappedColumnType.base[Segment, String](
    segment => ???, // logic here to convert Segment to JSON string
    string => ??? // logic here to convert JSON string to Segment case class
  )

然后按如下方式定义您的列(实际上是您的代码):

def seg = column[Option[Segment]]("segment")

您可以在结果和查询中同时使用以上内容,例如像这样:

   MyTable
      .filter(_.segment === Segment(Some(true), None, None)
      .result

请记住,当您使用此对话(列定义,查询等)时,您需要在范围内使用此隐式(segmentColumnType)。