【发布时间】:2014-05-15 16:09:37
【问题描述】:
我想检索类型为 DateTime 的列的数据,我正在使用 jodatime。即使我有一个自定义 TypeMapper,我也会收到类型不匹配错误。
[error] C:\sample\modules\test\com\samp\user.scala:55: type mismatch;
[error] found : java.sql.Timestamp
[error] required: org.joda.time.DateTime
[error] result.nextTimestamp,
[error] ^
[error] one error found
这里是代码
import org.specs2.mutable.Specification
import scala.slick.session.Database
import Database.threadLocalSession
import scala.slick.jdbc.{GetResult, StaticQuery => Q}
import Q.interpolation
import org.joda.time.DateTime
import scala.slick.lifted.{MappedTypeMapper,TypeMapper}
import java.sql.Timestamp
class UserSpec
extends Specification {
"User tests " should {
"get all the user data in db" in
new WithServer() {
val db = Database.forURL(url = "jdbc:h2:/path/to/db-file", driver = "com.mysql.jdbc.Driver")
implicit def dateTimeTypeMapper = MappedTypeMapper.base[DateTime, Timestamp] (
dateTime => new Timestamp(dateTime.getMillis()),
timeStamp => new DateTime(timeStamp)
)
case class user(
id: String,
name: String,
joinedAt: DateTime,
description: Option[String]
)
implicit val getUserResult: GetResult[user] =
GetResult( result =>
user(
result.nextString,
result.nextString,
result.nextTimestamp,
result.nextStringOption)
)
db withSession {
val usr = Q.queryNA[user]("SELECT * FROM user").list()
usr foreach println
}
}
}
}
我不确定为什么这不起作用。非常感谢任何帮助或指示。
【问题讨论】:
标签: scala jodatime playframework-2.1 slick