我是否可以在Slick
中设置自定义列(我希望将案例类作为代表JSON
的列。)
case class Segment(isNative: Option[Boolean], origin: Option[List[String]],whitelist: Option[Whitelist])
def seg = column[Option[Segment]]("segment")
答案 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
)。