如何在Spring Data Mongo中为MongoDB文档自定义主键(保留id字段)
解决方案
要实现将name字段作为MongoDB文档的主键_id,同时保留类中的id字段,你需要调整注解的使用方式,具体步骤如下:
- 移除
id字段上的@Id注解:这个注解原本用于标记主键,现在要将主键转移到name字段,因此需要去掉它。如果不需要将id字段持久化到数据库,可以给它添加@Transient注解(该注解会让MongoDB忽略这个字段,不存入文档);如果需要保留该字段的持久化,直接去掉@Id即可。 - 在
name字段上添加@Id注解:这个注解会告诉MongoDB,将该字段的值作为文档的_id主键。
调整后的实体类代码如下:
public class Test { // 移除@Id,若不需要持久化该字段可添加@Transient private String id; @Id private String name; private String age; }
你之前使用的@Field("name")注解仅用于指定Java字段与MongoDB文档字段的名称映射,和主键的设置逻辑无关,因此无法实现将name设为主键的需求。
内容的提问来源于stack exchange,提问作者Pushpak
相关产品推荐
相关产品推荐

