2017-02-16 63 views
0

我可以有一個自定義列Slick(我想要一個案例類作爲代表JSON的列)。浮油的自定義列

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

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

回答

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)在地方範圍。