【问题标题】:spring data mongodb _id mapping preferencespring data mongodb _id 映射首选项
【发布时间】:2014-12-09 19:36:18
【问题描述】:

我在我的 java 应用程序中使用 spring data mongodb 框架来将我的应用程序数据保存在 mongodb 中。在我的 java 模型类中,我有两个字段。

1) 带有@Id 注释的字段 objId。 2) 一个字段id

关于映射到保存的 mongodb 文档中的 _id 键,哪个会获得偏好,或者我会得到多个映射的错误。我正在使用弹簧数据 mongo 1.6.1。我知道我可以对此进行测试,但我没有本地环境设置。

【问题讨论】:

    标签: mongodb spring-data-mongodb


    【解决方案1】:

    答案在文档http://docs.spring.io/spring-data/data-mongo/docs/1.7.0.M1/reference/html/

    MongoDB 要求所有文档都有一个“_id”字段。如果 你不提供一个驱动程序将分配一个 ObjectId 产生的价值。使用 MongoMappingConverter 时有 控制 Java 类的属性如何映射的某些规则 到这个 '_id' 字段。

    以下概述了将映射到“_id”的属性 文档字段:

    使用@Id 注释的属性或字段 (org.springframework.data.annotation.Id) 将映射到 '_id' 字段。

    将映射没有注释但命名为 id 的属性或字段 到“_id”字段。

    如您所见,@Id (objId) 将优先。

    【讨论】:

    • 所以我在我的一个 pojo 中有一个字段 id(没有 @Id 注释)......我该怎么办,这样春天就不会认为它是“_id”......即是有任何“NotId”注释(我希望在 pojo 中的 id 字段上使用此注释)?
    【解决方案2】:

    你可以使用@Field("id") 来禁用映射id字段到_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2016-12-29
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      相关资源
      最近更新 更多