Slick 3-sqlplain-MySQL日期
我试图将一个简单的java.util.Date插入MySQL时间戳字段slick 3和普通查询中Slick 3-sqlplain-MySQL日期,mysql,scala,slick,Mysql,Scala,Slick,我试图将一个简单的java.util.Date插入MySQL时间戳字段slick 3和普通查询中 sqlu"""INSERT INTO Table (name, date) VALUES (${obj.name}, ${obj.date})""" 当我只插入字符串值时,它工作得非常好 我找到了许多关于隐式转换的解释,并提出: implicit val JavaUtilDateMapper = MappedColumnType .base[java.util.Date
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隐式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)
感谢您的回答。不过,此解决方案每次(${obj.date:java.sql.Timestamp})都需要某种手动转换