2017-02-16 4 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을)이 필요합니다.