gpt4 book ai didi

scala - Play Framework 2.0 的 Anorm 上的 Joda DateTime 字段

转载 作者:行者123 更新时间:2023-12-03 10:54:56 28 4
gpt4 key购买 nike

我一直在学习 Play Framework,推荐的访问数据库的方法是使用内置异常组件。问题是,在异常情况下对 DateTime 没有很好的支持。它仍在使用java.util.Date .

有没有办法在异常中使用 Joda DateTime 或 java.sql.Timestamp?

如果无法使用 Joda 或 java.sql,我们可以为此添加一个模块吗?

最佳答案

更新:从 2.3.7 开始,现在是 natively supported .

我正在使用以下代码与 Anorm 无缝配合使用 DateTime。

import org.joda.time._
import org.joda.time.format._
import anorm._

object AnormExtension {


val dateFormatGeneration: DateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmssSS");

implicit def rowToDateTime: Column[DateTime] = Column.nonNull { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case ts: java.sql.Timestamp => Right(new DateTime(ts.getTime))
case d: java.sql.Date => Right(new DateTime(d.getTime))
case str: java.lang.String => Right(dateFormatGeneration.parseDateTime(str))
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass) )
}
}

implicit val dateTimeToStatement = new ToStatement[DateTime] {
def set(s: java.sql.PreparedStatement, index: Int, aValue: DateTime): Unit = {
s.setTimestamp(index, new java.sql.Timestamp(aValue.withMillisOfSecond(0).getMillis()) )
}
}

}

我认为它绝对应该是 Anorm 的一部分,只是需要经过打磨和更多测试。
让我知道它是否对您有所帮助。

关于scala - Play Framework 2.0 的 Anorm 上的 Joda DateTime 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388301/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com