我正在使用nscala-time(Joda Time的包装器)和slick来完成一个项目。我尝试使用以下语句将一行写入数据库:
Article.insert(0,"title1", "hellothere", DateTime.now.getMillis.asInstanceOf[Timestamp])
显然,Slick不支持Joda Time中定义的“dateTime”类型,我必须使用java.sql.Timestamp
代替。因此,我决定在insert
方法内进行一些转换,使用“asInstanceOf”。不幸的是,Scala很快告诉我无法将Java.Long转换为Java.sql.Timestamp。然后我使用了这个:
val dateTime = new DateTime();
val timeStamp = new Timestamp(dateTime.getMillis());
Article.insert(0,"title1", "hellothere", timeStamp)
这个神奇的方法可以正常工作,但我还是感到困惑。
我应该如何进行单向转换而不进行双向转换呢?我应该使用asInstanceOf
之外的其他转换方式吗?
Int
、Double
、Char
等)上进行一些转换之外,实际上并没有任何类型转换。 要么源对象有一个方法将其转换为其他内容(例如toInt
),要么目标类型具有将源类型的对象作为参数的构造函数。 - Daniel C. Sobral