ISODate无法从Spring Boot JPA repo解析

时间:2018-04-19 20:01:42

标签: java spring mongodb spring-boot

我有一个SpringBoot JPA存储库,可以找到一堆"事物"在具有名为" lastModified"的字段的MongoDB实例中这是一个ISODate(),如下所示。

{ "name": "a", "lastModified", "ISODate(2018-04-19T19:10:39.356574)" }

当我使用像:

这样的存储库函数时
public List<Thing> findByName(String name);

我得到了

org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value 'ISODate(2018-04-18T18:38:42.635027)'; nested exception is java.lang.IllegalArgumentException

我试过了

  • 创建单独的setter和构造函数,每个java.util.Date和 字符串并与a进行转换 SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS")
  • 使用 @DateTimeFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSSSSS") 实体
  • 上的lastModified参数

我是否遗漏了有关Mongo如何进行转换的内容?我希望它将ISODate变成一个简单的字符串并将其传递给setLastModified(String name)函数,但我猜那不是这样吗?

1 个答案:

答案 0 :(得分:1)

事实证明,这只是因为日期是作为一个“ISODate(2018-04-19T19:10:3​​9.356574)”的字符串插入而是作为一个日期,就像ISODate(“2018-04-17T19:43: 00Z“)

一旦我找到并修复了这些数据的来源,它就开始正常工作了。