使用光滑的MappedColumnType为静态查询编译错误

时间:2014-10-24 16:36:45

标签: scala slick

我有以下映射器,以便在Slick模型和查询中使用Joda DateTime值:

import java.sql.Timestamp
import org.joda.time.DateTime
import scala.slick.driver.MySQLDriver.simple._

object Mappers {
  implicit def joda  =
    MappedColumnType.base[DateTime, Timestamp](
      dt => new Timestamp(dt.getMillis),
      ts => new DateTime(ts.getTime)
    )
}

我定义的包含DateTime字段的表类似乎可以通过导入它来编译。但是,像这样的静态查询不会:

sql"""select s.expiresAt from tablename s limit 1""".as[DateTime].first

我收到此错误:

  could not find implicit value for parameter rconv: scala.slick.jdbc.GetResult[org.joda.time.DateTime]

我需要添加什么才能使其正常工作?

2 个答案:

答案 0 :(得分:2)

不幸的是,您需要定义另一个转换器

implicit val getDateTimeResult = GetResult(r => new DateTime(r.nextTimestamp()))

答案 1 :(得分:0)

我最后使用slick-joda-mapper而不是编写自己的映射器来解决这个问题。