2017-02-16 2 views
0

Slickにカスタム列を入れることができます(私は、ケースクラスをJSONを表す列として欲しい)。滑らかなカスタム列

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

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

答えて

1

もちろん、カスタムマッピングの問題です。ここでは、DBにStringを保存したい場合は、それがどのように見えるかです:

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)を持っている必要があります。

関連する問題