【问题标题】:Grails date conversion from and to Mongo从和到 Mongo 的 Grails 日期转换
【发布时间】:2015-05-01 17:35:17
【问题描述】:

我正在使用 Grails MongoDb 插件并尝试进行日期转换。

在我的配置中,我定义了不同的日期格式

grails.databinding.dateFormats = [ 
    'yyyy-MM-dd', 
    'yyyy-MM-dd HH:mm:ss.S', 
    "yyyy-MM-dd'T'hh:mm:ss'Z'" 
]

但是,当我从 mongodb 将一条记录读入我的客户域类时,我仍然收到此错误:我在做什么错?

org.springframework.beans.TypeMismatchException:转换失败 “java.lang.String”类型的属性值到所需类型 属性“lastUpdateDate”的“java.util.Date”;嵌套异常是 org.springframework.core.convert.ConversionFailedException: 失败 从类型 java.lang.String 转换为类型 @org.grails.databinding.BindingFormat java.util.Date 值 '1994-01-29T00:00:00Z';嵌套异常是 java.lang.IllegalArgumentException:java.lang.NumberFormatException: 对于输入字符串:“1994-01-29T00:00:00Z”

【问题讨论】:

  • 你从你的数据库中读取了什么?日期是保存为字符串还是日期?
  • 是的,我正在从数据库中读取字符串日期。我使用的伪代码是: def cust = new Customer (lasUpdateDate: new Date()) def obj = (DBObject) com.mongodb.util.JSON.parse ("${cust as JSON}") mongo.customers.insert (cust) 这基本上是我希望 Grails 在下面做的事情。

标签: mongodb grails


【解决方案1】:

看起来您已经在 MongoDB 数据库中手动插入了 lastUpdateDate 的值,该数据库以 String 格式而不是 MongoDB 的 ISODate() 格式存储。删除或修改数据库中的该记录,这将正常工作。

【讨论】:

  • 是的。这些记录是直接使用 gmongo 创建的,因为我在长批处理模式下单独使用 Grails 时内存不足。我认为 Grails 在从 bson 加载对象时会使用绑定日期格式,但我想这不是很遗憾。让我吃惊的是,如果你在 JSON 中转换一个对象,你会得到一个日期字符串。那么为什么不能读回来呢。
猜你喜欢
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2016-09-14
  • 2012-08-05
相关资源
最近更新 更多