Spring Data MongoDB _id映射偏好

12

我正在使用Spring Data MongoDB框架在我的Java应用程序中将应用程序数据持久化到MongoDB。在我的Java模型类中,我有两个字段。

1) 使用@ Id注释的objId字段。 2) id字段,用于映射到保存在mongodb文档中的_id键。哪一个会优先选择,或者是否会出现多个映射的错误。我正在使用Spring Data Mongo 1.6.1。我知道我可以测试一下,但我没有本地环境设置。

2个回答

15
答案在文档中 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注释)... 我该怎么办,以便Spring不认为它是“_id”... 即是否有任何“NotId”注释(我想在我的POJO中的ID字段上使用此注释)? - doga

7

您可以使用 @Field("id") 来禁用将映射的 id 字段命名为 _id。


这是一个可行的解决方案。 - Prasanth Rajendran

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接