在Slick GetResult中,Joda DateTime和sql Timestamp之间的类型不匹配错误

乌特吉·古杜鲁(Uttej Guduru)

我想检索类型为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
      }
    }
  }
}

我不确定为什么这行不通。任何帮助或指针,我们将不胜感激。

曼努埃尔·伯恩哈特(Manuel Bernhardt)

这里的问题是result.nextTimestamp返回一个java.sql.Timestampresult是JDBC ResultSet)。如果您想将其转换为DateTime,我认为这里有一个构造函数。所以你会写:

implicit val getUserResult: GetResult[user] = 
  GetResult( result =>
    user(
      result.nextString,
      result.nextString,
      new DateTime(result.nextTimestamp),
      result.nextStringOption)
    )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在F#中,“期望”和“给定”之间类型不匹配的错误是什么意思?

Slick中嵌套类的隐式GetResult

在Slick中按DateTime排序

在Xamarin.Forms中找不到“ HeightRequest”的属性,BindableProperty或事件,或者值和属性之间的类型不匹配错误

在Slick中的将来失败时捕获SQL错误

sql中的dateTime字段和dateTime.Now之间的区别

使用Slick重构期间类型不匹配

Scala枚举和Slick之间的映射

Slick中的子查询,Having和GroupBy

Slick Grid中的汇总标题和列

在 slick 中理解的 Future 和 Option

如何在Slick中执行SQL“ NOT LIKE”

如何在Slick中实现值类型?

C#和SQL Server之间的DateTime不匹配

groupBy方法在Slick中引发错误

我数据库中的Scala Slick和复杂类型

消息240,列中的锚点和递归部分之间的类型不匹配

无法在oracle中创建表函数,在FETCH游标和INTO变量之间发现类型不匹配

sqlserver中的datetime和timestamp之间的区别?

如何在Slick 3.x中从LocalDateTime到SQL-DateTime进行保留范围的映射?

问题:锚点与列SQL Server 2005中的递归部分之间的类型不匹配

参数类型不匹配,DateTime和DateTime

Mapper和Reducer之间的类型不匹配

如何在Slick2.0中使用DateTime?

slick 2.0.0-M2:如何定义自定义类型(slick 1.0.0中的MappedTypeMapper)?

Java 8 OffsetDateTime和Timestamp之间的Scala Slick 3.0隐式映射

SQL查询中的MS Access VBA数据类型不匹配错误

运行时错误“ 13”:SQL代码中的类型不匹配

混淆矩阵错误:实际值和预测值之间的数据类型不匹配