我是scala和slick的新手并且遇到了一些麻烦。
我正在尝试实现一个支持null的自定义类型映射器。
这个例子很简单......
http://slick.typesafe.com/doc/2.0.0/userdefined.html
我正在寻找一个示例,其中列可以定义为[Option [MyColumnT]]
我以为我可以做这样的事情
implicit val oAuth1InfoColumnType = MappedColumnType.base[Option[OAuth1Info], Option[String]](
{
case Some(info) => {
val skv = new SKV("token", info.token)
skv.append("secret", info.secret)
Some(skv.toString)
}
case None => None
},{
case Some(infoStr) => {
val skv = new SKV(infoStr)
Some(OAuth1Info(skv("token"), skv("secret")))
}
case None => None
}
)
def oAuth1Info = column[Option[OAuth1Info]]("oauth1_info")
但是,这会导致错误。
[error] could not find implicit value for evidence
parameter of type slick.driver.PostgresDriver.BaseColumnType[Option[String]]
显然,我不理解我是否有责任处理空值而不是仅提供隐式类型映射器作为[MyColumnT,String]而不使用Option。所以,我正在寻找一个例子。
答案 0 :(得分:1)
选项支持应该开箱即用。只需定义MappedColumnType.base[OAuth1Info, String]
并使用它:column[Option[OAuth1Info]](...)
。