scala slick 2.0自定义列类型支持null

时间:2014-03-16 14:15:53

标签: scala slick

我是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。所以,我正在寻找一个例子。

1 个答案:

答案 0 :(得分:1)

选项支持应该开箱即用。只需定义MappedColumnType.base[OAuth1Info, String]并使用它:column[Option[OAuth1Info]](...)