我正在尝试将一个简单的 java.util.Date 插入到 MySQL TIMESTAMP 字段 slick 3 和普通查询中。
sqlu"""INSERT INTO Table
(name, date)
VALUES
(${obj.name}, ${obj.date})"""
当我只插入字符串值时,它工作得很好。
我找到了很多关于隐式转换的解释并把:
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"""插入表...
我该怎么办?
谢谢
最佳答案
不是提供从 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 implicit 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)
关于mysql - Slick 3 - SQL Plain - MySQL 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40363035/