Scala – Play Framework 2.0的Anorm上的Joda DateTime字段
发布时间:2020-12-16 09:45:57 所属栏目:安全 来源:网络整理
导读:我一直在学习Play Framework,而推荐的访问数据库的方法是使用anorm组件中的构建。事实上,没有很好的支持DateTime在anorm。它仍然使用java.util.Date。 有没有办法使用Joda DateTime或java.sql.Timestamp在anorm? 如果没有办法使用Joda或者java.sql,我们
我一直在学习Play Framework,而推荐的访问数据库的方法是使用anorm组件中的构建。事实上,没有很好的支持DateTime在anorm。它仍然使用java.util.Date。
有没有办法使用Joda DateTime或java.sql.Timestamp在anorm? 如果没有办法使用Joda或者java.sql,我们可以添加一个模块吗? 解决方法
更新:自从播放2.3.7这是现在
natively supported。
我正在使用以下代码与DateTime无缝地与Anorm一起工作。 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的一部分,只需要抛光和更多的测试。让我知道,如果它帮助你。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |