我已经建立了自己的机制来为我的域对象分配身份,因此在持久化时,跟踪MongoDB分配给他们的东西真的没什么价值。但是,我为我的域类id
命名了标识字段,因为它简洁易懂。问题是,according to the documentation,Spring会自动将此字段映射到MongoDB的已分配ObjectID。如何为了解决这个问题而无需重命名我的id字段或定义用@Id
注释的自定义标识字段,如何防止这种情况发生呢?
答案 0 :(得分:1)
使用@MongoId代替@Id
@MongoId(targetType = FieldType.STRING)
protected String id;
即使“ shape”是ObjectId,它也会存储String
答案 1 :(得分:0)
好吧,恐怕你不能用Spring数据做到这一点。 Mongodb(反过来,Spring数据)需要一个字段来唯一标识每个document
。如果你已经有一个id
字段,如果它对每个对象都是唯一的,那么是的,你可以用@Id
注释它,mongo将负责其余的事情。
如果没有,您必须创建一个新字段并将其映射到_id
。