Slick 3 - SQL Plain - MySQL Date

时间:2016-11-01 15:17:31

标签: mysql scala slick

我正在尝试将一个简单的java.util.Date插入MySQL TIMESTAMP字段slick 3和普通查询。

sqlu"""INSERT INTO Table
     (name, date)
  VALUES
     (${obj.name}, ${obj.date})"""

当我只插入String值时,它非常有效。

我找到了许多关于隐式转换的解释并提出:

implicit val JavaUtilDateMapper =
  MappedColumnType .base[java.util.Date, java.sql.Timestamp] (
    d => new java.sql.Timestamp(d.getTime),
    d => new java.util.Date(d.getTime))

sqlu"""INSERT INTO Table
     (name, date)
  VALUES
     (${obj.name}, ${obj.date})"""
db.run(sqlu)

但我仍然收到错误: 错误:(57,5)找不到参数e的隐式值:slick.jdbc.SetParameter [java.util.Date]     sqlu“”“插入表...

我该怎么办?

谢谢

1 个答案:

答案 0 :(得分:2)

而不是提供从java.util.Datejava.sql.Timestamp的隐式转换并直接插入java.sql.Timestamp

sqlu"""INSERT INTO Table
     (name, date)
  VALUES
     (${obj.name}, ${new Timestamp(obj.date.getTime)})"""

db.run(sqlu)

或提供scala隐式def

implicit def toSQLTime(date: java.util.Date): java.sql.Timestamp = new java.sql.Timestamp(date.getTime)

 sqlu"""INSERT INTO Table
         (name, date)
      VALUES
         (${obj.name}, ${obj.date: java.sql.Timestamp})"""

    db.run(sqlu)