【问题标题】:No mapping metadata found for java.util.Date找不到 java.util.Date 的映射元数据
【发布时间】:2023-03-29 18:25:01
【问题描述】:

我正在使用 spring-boot + spring-data-rest + spring-data-mongodb 并且我有一个通过 Repository 公开的类,我最近从 Spring 的 1.3.7 升级到 1.4.3 Release开机。

问题是如果我将字段 createdDate 保留为可用...检查 API 时出现以下错误

去年我有一个类似的项目,它在 Spring Boot 1.3.2 上运行良好,不需要实现一些自定义解决方案或配置其他东西。

后期编辑刚刚降级到1.3.2 ...同样的错误...

“找不到 java.util.Date 的映射元数据”

public class SomeMessage {

@Id
private String id; 

private Map<String,String> messageDetails;

private String replyToId;

private String contactFormId;

//@CreatedDate
private Date createdDate;

//...getters, setters, what not

}

稍后编辑 2 ...完整的堆栈跟踪

org.springframework.data.mapping.model.MappingException: No mapping metadata found for java.util.Date
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:229) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1197) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$200(MappingMongoConverter.java:79) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1145) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:871) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:284) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:272) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:322) ~[spring-data-commons-1.12.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:272) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:232) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:192) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:188) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:79) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:2295) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1949) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1767) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1750) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:624) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.findAll(SimpleMongoRepository.java:357) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.findAll(SimpleMongoRepository.java:219) ~[spring-data-mongodb-1.9.6.RELEASE.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_72]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_72]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_72]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_72]

【问题讨论】:

  • 你能添加所有相关代码来重现问题吗?
  • 对不起,我没有太多代码要分享,因为一切都是由 Spring Boot 自动配置的 :)
  • 您的 mongo/boot 配置是如何设置的?看起来 Spring 无法找到 SomeMessage 类。确保您的 SomeMessage 与您的引导类在同一个包中。
  • 它在同一个包中,否则我需要添加一些注释来通知 spring ......我仍在尝试其他一些解决方法,但它们似乎不起作用.. . 奇怪的是去年有些项目运行良好
  • 您仍然有@Document 注释,对吧?看看有没有。

标签: mongodb spring-data-mongodb spring-data-rest


【解决方案1】:

您缺少 POJO 类的 @Document 注释。

来自docs

@Document - 应用于类级别以指示该类是 映射到数据库的候选对象。您可以指定名称 将存储数据库的集合。

更新:虽然它应该在没有@Document 的情况下工作,因为它不是强制性注释。

【讨论】:

    【解决方案2】:

    我在一条消息中遇到了类似的问题:

    找不到类 org.bson.types.ObjectId 的映射元数据

    我的实体有@Document 注释。 该实体中有一个字段Set&lt;ObjectId&gt;,用@DBRef(lazy = true) 注释。 删除 @DBRef 注释解决了我的问题。

    【讨论】:

      猜你喜欢
      • 2016-06-30
      • 1970-01-01
      • 2015-10-27
      • 2011-01-21
      • 2012-07-16
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多