我正在尝试将一个简单的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“”“插入表...
我该怎么办?
谢谢
答案 0 :(得分:2)
而不是提供从java.util.Date
到java.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)